hibernate学习二(HelloWorld)

一、建立hibernate配置文件

  在工程Hibernate_01_HelloWorld下的src上建立hibernate.cfg.xml,打开hibernate-release-4.3.11.Final/documentation/manual/en-US/html_single/index.html(hibernate开发文档),在文档中搜索configuration,找到 hibernate.cfg.xml配置文件的模板,复制到自己的工程中;

  1.修改配置文件适用jdbc和mysql数据库

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         <!-- Database connection settings -->
11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
13         <property name="connection.username">root</property>
14         <property name="connection.password">root</property>
15 
16         <!-- JDBC connection pool (use the built-in) -->
17 <!--         <property name="connection.pool_size">1</property> -->
18 
19         <!-- SQL dialect -->
20         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
21 
22         <!-- Enable Hibernate's automatic session context management -->
23 <!--         <property name="current_session_context_class">thread</property> -->
24 
25         <!-- Disable the second-level cache  -->
26         <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
27 
28         <!-- Echo all executed SQL to stdout -->
29         <property name="show_sql">true</property>
30 
31         <!-- Drop and re-create the database schema on startup -->
32         <property name="hbm2ddl.auto">update</property>
33 
34         <mapping resource="com/model/Student.hbm.xml"/>
35 
36     </session-factory>
37 
38 </hibernate-configuration>

  1. Database connection settings, 数据库连接的配置;

  2. SQL dialect, hibernate的方言选择,支持多种数据库语言,因我用的是MySQL数据库,所有适用 MySQLDialect,其他可以从文档里查;

  3. Echo all executed SQL to stdout, 是否显示sql语句;

  4. Drop and re-create the database schema on startup, hibernate启动时删除或者创建数据库结构的策略;

  5.Orm, pojo映射配置文件;

二、建立实体类

  在src目录下建立实体类包com.model,并创建实体类Student.java

 1 public class Student {
 2     private int id;
 3     private String name;
 4     private int age;
 5     public int getId() {
 6         return id;
 7     }
 8     public void setId(int id) {
 9         this.id = id;
10     }
11     public String getName() {
12         return name;
13     }
14     public void setName(String name) {
15         this.name = name;
16     }
17     public int getAge() {
18         return age;
19     }
20     public void setAge(int age) {
21         this.age = age;
22     }
23 }

  建立student映射文件与student.java同意路径,Student.hbm.xml(建议从hibernate文档中查找)

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 <hibernate-mapping package="org.hibernate.tutorial.domain">
7 [...]
8 </hibernate-mapping>

  修改Student.hbm.xml,适用student.java类与数据库student表的映射;

 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 package="com.model">
 8 <!-- name对应实体类的名字 -->
 9     <class name="Student">
10 <!--     属性id为设置主键,name的值对应实体类里id属性 -->
11         <id name="id"></id>
12 <!--    其他字段的映射 -->
13         <property name="name"></property>
14         <property name="age"></property>
15     </class>
16 </hibernate-mapping>

二、在Mysql数据库中创建student表

CREATE TABLE `student` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

三、建立hibernate辅助类

  根据hibernate官方文档,最好适用hibernate util辅助类,在src目录下新建com.util包,并在下面建立HibernateUtil.java类(博主学习的时候,这个版本的文档里的util类有错误,下面的代码已经改正)

 1 package com.util;
 2 
 3 import org.hibernate.SessionFactory;
 4 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 5 import org.hibernate.cfg.Configuration;
 6 
 7 public class HibernateUtil {
 8 
 9     private static final SessionFactory sessionFactory = buildSessionFactory();
10 
11     private static SessionFactory buildSessionFactory() {
12         try {
13             // Create the SessionFactory from hibernate.cfg.xml
14             return new Configuration().configure().buildSessionFactory( new StandardServiceRegistryBuilder().applySettings(new Configuration().configure().getProperties()).build());
15         }
16         catch (Throwable ex) {
17             // Make sure you log the exception, as it might be swallowed
18             System.err.println("Initial SessionFactory creation failed." + ex);
19             throw new ExceptionInInitializerError(ex);
20         }
21     }
22 
23     public static SessionFactory getSessionFactory() {
24         return sessionFactory;
25     }
26 
27 }

四、编写测试类

  建立测试类Main,代码如下:

 1 import org.hibernate.Session;
 2 import org.hibernate.SessionFactory;
 3 
 4 import com.model.Student;
 5 import com.util.HibernateUtil;
 6 
 7 public class Main {
 8     public static void main(String[] args) {
 9         //设置要插入的数据
10         Student s = new Student();
11         s.setId(1);
12         s.setName("233");
13         s.setAge(100);
14         //通过util类创建sessionFactory
15         SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
16         Session session = sessionFactory.openSession();
17         //开启事务
18         session.beginTransaction();
19         //将student存入数据库
20         session.save(s);
21         session.getTransaction().commit();
22         //关闭资源
23         session.close();
24         sessionFactory.close();
25     }
26 }

  结果:

  

项目结构:

  

----------------------------------------------------------------------------------------------------

此文为个人学习记录,如有参考转载,请注明出处 黑白熊的博客 http://www.cnblogs.com/xiong233/

原文地址:https://www.cnblogs.com/xiong233/p/6252017.html