使用Hibernate进行开发时,有两种方式,一种是使用XML配置,这是比较传统的方式。另一种是使用注解,这是JPA标准所支持的。今天介绍得是使用XML配置的方式使用Hibernate。具体使用方式如下:
1.下载Hibernate 包
http://hibernate.org/orm/
hibernate-release-4.3.10.Final.zip
2.新建工程
这里的Reference Librarys 分为两部分,一部分是Hibernate 的required里面的jar包,一部分是连接sqlserver 2012数据库的jar包(sqljdbc4.jar)
3.model类
package com.wicresoft.model; public class Student { private int id; private int age; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }4.student.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.wicresoft.model"> <class name="Student" table="student"> <id name="id" column="ID"> <generator class="identity"/> </id> <property name="age" /> <property name="name" /> </class> </hibernate-mapping>5.hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=HibernateDB</property> <property name="connection.username">sa</property> <property name="connection.password">1234</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQLDialect --> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class"> org.hibernate.cache.NoCacheProvider </property> <!-- 显示SQL语句 --> <property name="show_sql">true</property> <!-- 格式化输出SQL语句 --> <property name="format_sql">true</property> <!-- validate 加载hibernate时,验证创建数据库表结构 --> <!-- create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。 --> <!-- create-drop 加载hibernate时创建,退出是删除表结构 --> <!-- update 加载hibernate自动更新数据库结构 --> <!-- <property name="hbm2ddl.auto">create</property> <property name="myeclipse.connection.profile"></property> --> <!-- hibernate与数据库的对象关系映射文件**.hbm.xml --> <mapping resource="com/wicresoft/model/Student.hbm.xml" /> <!-- 使用annotion注解时,hibernate与数据库对象关系映射表示 --> <mapping class="com.wicresoft.model.Teacher" /> <!-- 推荐使用annotion注解来表示映射关系 --> <!-- <mapping class="com.lsj.hibernate.model.Teacher" /> --> </session-factory> </hibernate-configuration>6.Test
package com.wicresoft.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.wicresoft.model.Student; public class StudentTest { public static void main(String[] args) { Student s = new Student(); //s.setId(3); s.setAge(22); s.setName("AAA"); Configuration cfg = new Configuration(); // 读取hibernate.cfg.xml中的配置 cfg.configure(); // 获取SessionFactory SessionFactory sf = cfg.buildSessionFactory(); // 获取Session Session session = sf.openSession(); // 开启事务 session.beginTransaction(); // 保存 session.save(s); // 提交事务 session.getTransaction().commit(); // 关闭连接 session.close(); sf.close(); } }7.输出
Hibernate会输出sql语句在这里,参数被问好替代了。
7.建表sql
USE [master] GO IF EXISTS(SELECT 1 FROM sysdatabases WHERE NAME=N'HibernateDB') BEGIN DROP DATABASE HibernateDB --如果数据库存在先删掉数据库 END GO CREATE DATABASE HibernateDB ON PRIMARY --创建主数据库文件 ( NAME = 'HibernateDB', FILENAME = 'E:\MySpace\HibernateDB\HibernateDB.dbf', SIZE = 5MB, MaxSize = 20MB, FileGrowth = 1MB ) LOG ON --创建日志文件 ( NAME = 'HibernateDBLog', FileName = 'E:\MySpace\HibernateDB\HibernateDB.ldf', Size = 2MB, MaxSize = 20MB, FileGrowth = 1MB ) GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'STUDENT') AND type in (N'U')) BEGIN CREATE TABLE STUDENT ( ID INT PRIMARY KEY IDENTITY(1,1) NOT NULL, AGE INT NULL, NAME NVARCHAR(50) NULL ) END IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'TEACHER') AND type in (N'U')) BEGIN CREATE TABLE TEACHER ( ID INT PRIMARY KEY IDENTITY(1,1) NOT NULL, NAME NVARCHAR(50) NULL, TITLE NVARCHAR(50) NULL ) END INSERT INTO STUDENT VALUES(20,'TOM'); INSERT INTO STUDENT VALUES(21,'HEY'); INSERT INTO TEACHER VALUES('T1','L1'); INSERT INTO TEACHER VALUES('T2','L2'); SELECT * FROM STUDENT; SELECT * FROM TEACHER; DROP TABLE TEACHER; DROP TABLE STUDENT;