1.下载hibernate-release-4.2.4.Final.zip 从点击打开链接( http://www.hibernate.org/downloads)下载
2.在eclipse中新建一个java project工程,名为hibernate_first,在hibernate_first中新建一个ilb文件夹,
解压下载的hibernate-release-4.2.4.Final.zip,打开之后有几个文件夹 lib---jar库 documentation--文档说明 projetc---关于hibernate的配置/例子等等之类的
进入到hibernate-release-4.2.4.Final\lib\required\ 目录下 将8个必须的jar包拷贝到 hibernate_first\lib\ 下面 并且将8个jar包单击右键选中--Build Path--Add to Build Path(即添加为工程引用)
同时将mysql-connector-java-5.1.25-bin.jar 添加lib包下
3.编写配置文件 进入到hibernate-release-4.2.4.Final\project\etc\ 目录下 将hibernate.cfg.xml文件拷贝到项目hibernate_first\src\ 目录下
将hibernate.cfg.xml文件修改为如下;
- <!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.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">root</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="hbm2ddl.auto">create</property>
- <property name="hibernate.show_sql">true</property>
- <mapping resource="com/undergrowth/hibernate/domain/Student.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
简单解释一下上面的hibernate.cfg.xml文件
connection.driver_class/connection.url/connection.username/connection.password 是用于mysql连接的驱动/资源定位符/登陆账号/登陆密码
hibernate.dialect是hibernate用于兼容多种数据库而做的,告诉hibernate使用的是哪一种数据库
hibernate.show_sql是在进行相应的hibernate操作时,会在控制台输出相应的sql语句
hbm2ddl.auto是在hibernate第一次进行操作时 都会自己创建一个表
mapping resource用于指明对象与表的映射关系 这里指的是Student类和学生表的一个映射文件 下面也会介绍到
上面的这些属性其实不用记 在hibernate-release-4.2.4.Final\project\etc\hibernate.properties文件中都可以找到
4.编写对象与对象的映射文件 引用上面的配置 建立Student.java类 如下
- package com.undergrowth;
- import java.util.Date;
- public class Student {
- private int id;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Date getBirthday() {
- return birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- public String getMajor() {
- return major;
- }
- public void setMajor(String major) {
- this.major = major;
- }
- private String name;
- private Date birthday;
- private String major;
- public Student(String name, Date birthday, String major) {
- this.name = name;
- this.birthday = birthday;
- this.major = major;
- }
- public Student(){} //用于给hibernate的反射使用
- @Override
- public String toString() {
- return "Student [id=" + id + ", name=" + name + ", birthday="
- + birthday + ", major=" + major + "]";
- }
- }
编写Student的ORM映射文件Student.hbm.xml hibernate自带的模板很多 这里引用hibernate-release-4.2.4.Final\project\documentation\src\main\docbook\quickstart\tutorials\basic\src\test\java\org\hibernate\tutorial\hbm\ 目录下的Event.hbm.xml
Student.hbm.xml
- <?xml version="1.0"?>
- <!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.undergrowth">
- <class name="Student" table="student">
- <id name="id">
- <generator class="native"/>
- </id>
- <property name="name"/>
- <property name="birthday"/>
- <property name="major"/>
- </class>
- </hibernate-mapping>
5.测试
StudentDaoInter.java
- package com.undergrowth.inter;
- import com.undergrowth.Student;
- public interface StudentDaoInter {
- public void saveStudent(Student student);
- public void updateStudent(Student student);
- public void deleteStudent(Student student);
- public Student findIdStudent(int id);
- public Student findNameStudent(String name);
- }
StudentDaoImp.java
- package com.undergrowth.imple;
- import com.undergrowth.Student;
- import com.undergrowth.hibernate.utils.HibernateUtils;
- import com.undergrowth.inter.StudentDaoInter;
- public class StudentDaoImp implements StudentDaoInter {
- @Override
- public void saveStudent(Student student) {
- // TODO Auto-generated method stub
- HibernateUtils.add(student);
- }
- @Override
- public void updateStudent(Student student) {
- // TODO Auto-generated method stub
- HibernateUtils.update(student);
- }
- @Override
- public void deleteStudent(Student student) {
- // TODO Auto-generated method stub
- HibernateUtils.delete(student);
- }
- @Override
- public Student findIdStudent(int id) {
- // TODO Auto-generated method stub
- return (Student) HibernateUtils.get(Student.class, id);
- }
- @Override
- public Student findNameStudent(String name) {
- // TODO Auto-generated method stub
- return (Student) HibernateUtils.get(name);
- }
- }
HibernateUtils.java
- package com.undergrowth.hibernate.utils;
- import java.io.Serializable;
- import org.hibernate.HibernateException;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- public class HibernateUtils {
- private static SessionFactory sf;
- static{
- Configuration cfg=new Configuration();
- cfg.configure();
- sf= cfg.buildSessionFactory();
- }
- public static Session getSession()
- {
- return sf.openSession();
- }
- public static void add(Object entity)
- {
- Session session=null;
- Transaction tx=null;
- try {
- session=HibernateUtils.getSession();
- tx=session.beginTransaction();
- session.save(entity);
- tx.commit();
- } catch (HibernateException e) {
- throw e;
- }finally{
- if(session!=null)
- session.close();
- }
- }
- public static void delete(Object entity)
- {
- Session session=null;
- Transaction tx=null;
- try {
- session=HibernateUtils.getSession();
- tx=session.beginTransaction();
- session.delete(entity);
- tx.commit();
- } catch (HibernateException e) {
- throw e;
- }finally{
- if(session!=null)
- session.close();
- }
- }
- public static void update(Object entity)
- {
- Session session=null;
- Transaction tx=null;
- try {
- session=HibernateUtils.getSession();
- tx=session.beginTransaction();
- session.update(entity);
- tx.commit();
- } catch (HibernateException e) {
- throw e;
- }finally{
- if(session!=null)
- session.close();
- }
- }
- public static Object get(Class clazz,Serializable id)
- {
- Session session=null;
- try {
- session=HibernateUtils.getSession();
- Object obj=session.get(clazz, id);
- return obj;
- } catch (HibernateException e) {
- throw e;
- }finally{
- if(session!=null)
- session.close();
- }
- }
- public static Object get(String name)
- {
- Session session=null;
- try {
- session=HibernateUtils.getSession();
- Query query=session.createQuery("from Student as student where name=:name");
- query.setParameter("name", name);
- Object obj=query.uniqueResult();
- return obj;
- } catch (HibernateException e) {
- throw e;
- }finally{
- if(session!=null)
- session.close();
- }
- }
- }
HibernateTest.java
- package com;
- import java.util.Date;
- import com.undergrowth.Student;
- import com.undergrowth.imple.StudentDaoImp;
- public class HibernateTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- StudentDaoImp imp=new StudentDaoImp();
- //添加
- Student student=new Student("under", new Date(), "计算机");
- System.out.println(student);
- imp.saveStudent(student);
- //查询
- student=imp.findNameStudent("under");
- System.out.println(student);
- //修改
- student.setMajor("电信");
- imp.updateStudent(student);
- //查询
- student=imp.findNameStudent("under");
- System.out.println(student);
- //删除
- imp.deleteStudent(student);
- }
- }
打印的控制台信息