hykd

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

首先,创建java project ,导入需要的jar包

添加hibernate.cfg.xml

 1 <?xml version='1.0' encoding='UTF-8'?> 
 2      <!DOCTYPE hibernate-configuration PUBLIC 
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
 4         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
 5      <!-- 正文开始 --> 
 6  <hibernate-configuration> 
 7      <!--下面是数据库的基本连接信息,对一个应用来说,设置一个session-factory节点就够了,除非我们中间使用了多个数据库--> 
 8      <session-factory> 
 9          <!--用户名 --> 
10          <property name="connection.username">root</property> 
11          <!--url信息 --> 
12          <property name="connection.url">jdbc:mysql://localhost:3306/share</property> 
13          <!--数据库方言信息--> 
14          <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
15          <!--密码 --> 
16          <property name="connection.password">1111</property> 
17          <!--数据库驱动信息 --> 
18          <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
19          <!--指定Hibernate映射文件路径 --> 
20          <mapping resource="com/example/hibernate/User.hbm.xml" /> 
21      </session-factory> 
22 </hibernate-configuration> 

建立User model:

 1 package com.example.hibernate;
 2 
 3 public class User {
 4 
 5     private int id;
 6     private String name;
 7     private String head_image;
 8     private String mobile;
 9     private String email;
10     private String address;
11     private int age;
12     private String user_no;
13     private String password;
14     
15     
16     public int getId() {
17         return id;
18     }
19     public void setId(int id) {
20         this.id = id;
21     }
22     public String getName() {
23         return name;
24     }
25     public void setName(String name) {
26         this.name = name;
27     }
28     public String getHead_image() {
29         return head_image;
30     }
31     public void setHead_image(String head_image) {
32         this.head_image = head_image;
33     }
34     public String getMobile() {
35         return mobile;
36     }
37     public void setMobile(String mobile) {
38         this.mobile = mobile;
39     }
40     public String getEmail() {
41         return email;
42     }
43     public void setEmail(String email) {
44         this.email = email;
45     }
46     public String getAddress() {
47         return address;
48     }
49     public void setAddress(String address) {
50         this.address = address;
51     }
52     public int getAge() {
53         return age;
54     }
55     public void setAge(int age) {
56         this.age = age;
57     }
58     public String getUser_no() {
59         return user_no;
60     }
61     public void setUser_no(String user_no) {
62         this.user_no = user_no;
63     }
64     public String getPassword() {
65         return password;
66     }
67     public void setPassword(String password) {
68         this.password = password;
69     }
70     
71 
72 }

同时,数据库建立起相应的表(此处省略)

映射文件,User.hbm.xml

 1 <?xml version="1.0"?>  
 2 <!DOCTYPE hibernate-mapping PUBLIC   
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
 5       
 6 <!--   
 7     <hibernate-mapping>一般不去配置,采用默认即可。  
 8     default-cascade="none":默认的级联风格,表与表联动。  
 9     default-lazy="true":默认延迟加载  
10  -->  
11 <hibernate-mapping>  
12   
13     <!--   
14         <class>:使用class元素定义一个持久化类。  
15         name="com.example.hibernate":持久化类的java全限定名;  
16         table="user":对应数据库表名;  
17         mutable="true":默认为true,设置为false时则不可以被应用程序更新或删除;  
18         dynamic-insert="false":默认为false,动态修改那些有改变过的字段,而不用修改所有字段;  
19         dynamic-update="false":默认为false,动态插入非空值字段;  
20         select-before-update="false":默认为false,在修改之前先做一次查询,与用户的值进行对比,有变化都会真正更新;  
21         optimistic-lock="version":默认为version(检查version/timestamp字段),取值:all(检查全部字段)、dirty(只检查修改过的字段)、  
22                                    none(不使用乐观锁定),此参数主要用来处理并发,每条值都有固定且唯一的版本,版本为最新时才能执行操作;  
23      -->  
24     <class name="com.example.hibernate.User" table="user" dynamic-insert="true" dynamic-update="true" optimistic-lock="version">  
25           
26         <!--   
27             <id>:定义了该属性到数据库表主键字段的映射。  
28             name="userId":标识属性的名字;  
29             column="userId":表主键字段的名字,如果不填写与name一样;  
30          -->  
31         <id name="id">  
32             <!-- <generator>:指定主键由什么生成,推荐使用uuid,assigned指用户手工填入。 native表示由本地数据库设定决定-->  
33             <generator class="native"/>  
34         </id>  
35           
36         <!--   
37             <version/>:使用版本控制来处理并发,要开启optimistic-lock="version"和dynamic-update="true"。  
38             name="version":持久化类的属性名,column="version":指定持有版本号的字段名;  
39          -->  
40         <!-- <version name="version" column="version"/>   -->
41           
42         <!--   
43             <property>:为类定义一个持久化的javaBean风格的属性。  
44             name="name":标识属性的名字,以小写字母开头;  
45             column="name":表主键字段的名字,如果不填写与name一样;  
46             update="true"/insert="true":默认为true,表示可以被更新或插入;  
47          -->  
48         <property name="name" column="name" />  
49         <property name="head_image" column="head_image" />
50         <property name="mobile" column="mobile" />
51         <property name="email" column="email" />
52         <property name="address" column="address" />
53         <property name="age" column="age" />
54         <property name="user_no" column="user_no" />
55         <property name="password" column="password" />
56       
57         <!--   
58             组件映射:把多个属性打包在一起当一个属性使用,用来把类的粒度变小。  
59             <component name="属性,这里指对象">  
60                 <property name="name1"></property>  
61                 <property name="name2"></property>  
62             </component>  
63          -->  
64            
65          <!--   
66             <join>:一个对象映射多个表,该元素必须放在所有<property>之后。  
67             <join table="tbl_test:子表名">  
68                 <key column="uuid:子表主键"></key>  
69             <property name="name1:对象属性" column="name:子表字段"></property>  
70          </join>  
71           -->  
72            
73     </class>  
74       
75 </hibernate-mapping>  

接下来是测试类:

 1 package com.example.hibernate;
 2 
 3 
 4 import org.hibernate.Session;
 5 import org.hibernate.SessionFactory;
 6 import org.hibernate.Transaction;
 7 import org.hibernate.cfg.Configuration;
 8 import org.hibernate.service.ServiceRegistry;
 9 import org.hibernate.service.ServiceRegistryBuilder;
10 import org.junit.After;
11 import org.junit.Before;
12 import org.junit.Test;
13 
14 
15 public class MyTest {
16 
17     SessionFactory sessionFactory;
18     Session session;
19     Transaction transaction;
20     
21     @Before
22     public void init(){
23         Configuration configuration = new Configuration().configure();
24         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
25         sessionFactory = configuration.buildSessionFactory(serviceRegistry);
26         session = sessionFactory.openSession();
27         transaction = session.beginTransaction();
28     }
29     
30     @Test
31     public void save(){
32         User user = new User();
33         user.setAddress("福建厦门鼓浪屿");
34         user.setAge(10);
35         user.setEmail("1233454543@zzu.cn");
36         user.setHead_image("ïmg1.jpg");
37         user.setMobile("123224324");
38         user.setName("老王");
39         user.setPassword("11111");
40         user.setUser_no("11111");
41         session.save(user);
42     }
43     
44     @After
45     public void destroy(){
46         transaction.commit();
47         session.close();
48         sessionFactory.close();
49     }
50 
51 }

单表的操作到此完成

posted on 2016-09-13 17:07  hykd  阅读(423)  评论(0)    收藏  举报