今天学习hibernate 。

创建User类:

package com.hibernate;

import java.util.Date;

public class User {
private Integer id;
private String name;
private Date birth; public User(){} public User(Integer id, String name, Date birth) {
super();
this.id = id;
this.name = name;
this.birth = birth;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", birth=" + birth + "]";
} }

写User类的hiebernate

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.hibernate">
<!-- 映射表和实体 -->
<class name="User" table="t_user">
<!-- 字段(column)和属性(name) 属性名和字段名一致的时候,可以省略-->
<id name="id">
<!-- 主键生成器 -->
<generator class="increment"></generator>
</id>
<property name="name"></property>
<property name="birth"></property>
</class>
</hibernate-mapping>

配置hibernate的映射:

<?xml version="1.0" encoding="utf-8"?>
<!--
dtd:document type definition
标签,标签中的属性,标签的层级,标签的先后顺序
-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置信息 -->
<!-- 数据库连接参数 -->
<property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.1.105:1521:orcl</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.username">ems</property>
<property name="hibernate.connection.password">123456</property> <!-- 自身配置信息
dialect:方言 指示数据库的厂商.
:hibernate在进行底层的数据库操作时,会针对不同的数据库特点,做出相应的适应.
-->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 显示 并 格式化 hibernate底层执行的sql语句 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
      <!--在数据库中自动创建表-->
<property name="hbm2ddl.auto">update</property>
<!-- 映射文件的注册 -->
<mapping resource="com/hibernate/User.hbm.xml"/> </session-factory>
</hibernate-configuration>

写测试类:

package com.hibernate;

import java.util.Date;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session; public class Test {
public static void main(String[] args) {
//加载配置
Configuration config=new Configuration().configure();
//用加载配置连接session工厂
SessionFactory factory =config.buildSessionFactory();
//利用session工厂创建session
Session session=factory.openSession();
//通过session获取事务
Transaction transaction=session.beginTransaction();
User u=new User(null,"heluwei",new Date());
session.save(u);
transaction.commit();
session.close();
factory.close();
}
}

小知识:

getCurrentSession()和openSession()

用getCurrentSession()需要在xml文件中配置

<!--  即可通过getCurrentSession 获取线程唯一的session -->
<property name="current_session_context_class">thread</property>
<!-- 禁用了javaEE6的bean-validate -->
<property name="javax.persistence.validation.mode">none</property>

openSession每次调用都获取新的session对象。但是getCurrentSession在同一线程中多次调用,获取的是同一个对象。

利用注解的方式:

在xml配置文件中需要加上需要注解的 类:

<mapping class="com.hibernate.User"/>

实体:

package com.hibernate;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType; import org.hibernate.annotations.GenericGenerator; @Entity//这是一个参与ORM映射的实体
//参与ORM的表,及表名,如果表名和实体名一致的话,则此注解可以省略.
//则hibernate会用实体名作为表名
@Table(name="t_user")
public class User {
//@Id必需注解
@Id//此属性要映射主键列
//如果属性名和列名一致,则@Column可以省略
@Column(name="id")//此属性映射的列名为id
@GenericGenerator(name="inc47",strategy="increment")
@GeneratedValue(generator="inc47")
private Integer id;
//@Column(name="name")
private String name;
//@Column(name="birth")
//Date==只保存日期
//Time==只保存时间
//TimeStamp==保存日期和时间 (默认)
@Temporal(TemporalType.DATE)
private Date birth;
public User(){} public User(Integer id, String name, Date birth) {
super();
this.id = id;
this.name = name;
this.birth = birth;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", birth=" + birth + "]";
} }

hibernate------->第一个程序的更多相关文章

  1. Hibernate第一个程序(最基础的增删改查) --Hibernate

    本例实现Hibernate的第一个程序,Hibernate的优点我想大家都很清楚,在这里不做过多赘述.总之,使用Hibernate对数据库操作,也就是来操作实体对象的! 项目目录: 一.第一步要做的就 ...

  2. 用my eclipse 新建hibernate 第一个程序

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 今天就来开始建我们的第一个hibernat ...

  3. Hibernate第一个程序

    1. 下载资源:www.hibernate.org 2. 资源介绍hibernate-release-4.3.10.Final a) Documentation  相关文档 b) Lib 相关jar包 ...

  4. Hibernate5笔记1--Hibernate简介和第一个程序

    Hibernate简介: Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hib ...

  5. Hibernate 入门的第一个程序

    一. Hibernate介绍     Hibernate是基于对象/关系映射(ORM,Object/Relational Mapping)的一个解决方案.ORM方案的思想是将对象模型表示的对象映射到关 ...

  6. Android开发-之第一个程序:HelloWorld!

    小编觉得不管学习什么编程的时候,第一个程序都是要求打印输出一个"HelloWorld!",那就从最简单的HelloWorld开始吧!哈哈~~~~ 一.创建一个Android工程 1 ...

  7. 在运行Hibernate Hello World程序的时候,抛如下错误: view plain Exception in thread "main" org.hibernate.exception.LockAcquisitionException 解决方法

    在运行Hibernate Hello World程序的时候,抛如下错误: Exception in thread "main" org.hibernate.exception.Lo ...

  8. [Fluent NHibernate]第一个程序

    目录 写在前面 Fluent Nhibernate简介 基本配置 总结 写在前面 在耗时两月,NHibernate系列出炉这篇文章中,很多园友说了Fluent Nhibernate的东东,也激起我的兴 ...

  9. rails再体验(第一个程序)

    掌握redmine plugin开发的目标在2016年未实现,2017年继续. 选择<Ruby on Rails Tutorial>教程,windows安装railsinstaller,该 ...

  10. OpenGL学习笔记1——第一个程序

    学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...

随机推荐

  1. Redis安装介绍

    Redis安装介绍 一.Linux版本及配置 1.  Linux版本:Red Hat Enterprise Linux 6虚拟机 2.  配置: 内存:1G:CPU:1核:硬盘:20G 二.Redis ...

  2. cocos2dx android运行Luac编译后的lua代码

    环境: win7 64 cocos2d-2.1rc0-x-2.1.2 lua 5.1 通常我们编写好的lua代码都是明文形式,谁都可以查看修改,为了防止自己的劳动成果不被别人轻易的盗取,可以使用lua ...

  3. K-Means算法

    K-Means算法 K-Means算法的输入N,K和一个size为N的向量组vector.输出K个两两互不相交的向量组.其本质是将给定的向量组划分成K个类别,使得同类别的向量相似度比较大,而不同类别的 ...

  4. 解决中文乱码( jsp表单提交中文时出现乱码)

    有三种方法: 1.建立一个filter中文解决乱码 2.Struts2在struts.xml中修改默认的编码设定 3.用Spring解决中文乱码 4.直接在jsp中修改解决 1.建立一个filter解 ...

  5. Lucene.net入门学习系列(2)

    Lucene.net入门学习系列(2) Lucene.net入门学习系列(1)-分词 Lucene.net入门学习系列(2)-创建索引 Lucene.net入门学习系列(3)-全文检索 在使用Luce ...

  6. TFS Services 集成Docker

    随着Docker的爆发,越来越多软件研发团体开始享用和受益于Docker系统体系带来的巨大好处.Docker的使用,除了减少软硬件成本的立竿见影效果,更是对软件生命周期过程开发.测试.生成部署和运维整 ...

  7. CentOS 安装 Mogodb(在线 && 离线)

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html 先说推荐安装:在线安装,跟着官方走可以避免一些问题 新学Mon ...

  8. Java深入研究【1、object类】

    一.概述Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 参考英文:* Class {@code Object} is the ro ...

  9. NET仿微信Oauth2.0

    这个文章先说一说Oauth2.0的原理,再到应用场景,最后才是代码实现,这样才学会最终的思想,并在应用场景使用,所谓实践出真理. 1,Oauth2.0的原理 OAuth是一个关于授权(authoriz ...

  10. Jmeter对基于websocket协议的压力测试

      WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).   浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就 ...