Hibernate学习笔记之一
ORM(Object/Relationship Mapping):对象/关系映射
程序中不使用SQL语句的原因:
1.不同数据库使用的SQL语法不同。
2.同样功能在不同数据库中的实现方法不同。
3.程序过分依赖SQL语句对程序移植以及扩展、维护带来很大麻烦。
什么是Hibernate
java领域一款开源的ORM框架技术。
对JDBC进行了非常轻量级的封装。
Hibernate开发前准备
Hibernate Tools For Eclipse Plugins插件
可以简化ORM框架Hibernate,JBoss Seam,EJB3等的开发工作。
导入Hibernate必须的jar包
hibernate-release-4.2.4.Final\lib\requird
导入Mysql的jdbc驱动
mysql-connection-java-5.1.7-bin.jar
导入Junit-4的jar包
junit-4.10.jar
(可以在Eclipse>Windows>Preferences>Java>Build Path>User Librarys将三份jar包添加到用户类库中。)
编写Hibernate例子
1.创建Hibernate配置文档hibernate.cfg.xml(Hibernate configuration Files)
//基本配置
<property name="connection.username">root</property>
<property name="connection.password"></property>
//要连接的数据库用户名
<property name="connection.driver_class">com.mysql.jadc.Driver</property>
//数据库的jdbc驱动
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
//访问数据库地址
<property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&charcaterEncoding=UTF-8</property>
//访问数据库的地址另外一种写法,使用Unicode字符集避免产生中文乱码与上一句取其一
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
//指定数据库的方言
//常用属性
<property name="show_sql">true</property>
//控制台输出sql语句
<property name="format_sql">true</property>
//设置sql语句排版
<property name="hbm2ddl.auto">{update/create}</property>
//生成表结构策略。{create|update|creat-edrop|validate}
//create每次生成新的表结构,update原有表基础上更新,create-drop先创建表再删除,validate对原来表结构进行验证,现在表结构与原来的不同就不会创建表结构
<property name="hibernate.default_schma">默认数据库前缀</property>
在代码7或者9中选择一句使用即可,查看mysql端口号可以在mysql中使用命令 show variables like ‘port’
2.创建持久化类
原则:
1)公有的类
2)提供公有的默认的不带参数的构造方法
3)属性私有
4)属性setter/getter封装
3.创建对象-关系文件
选择持久化类,创建Hibernate XML Mapping file(hbm.xml)。
在hibernate.cfg.xml中加入代码
<mapping resource="对象-关系文件.hbm.xml"/>
4.创建对应的数据库
5.使用JUint测试
@Before:初始化方法
//创建配置对象
Configuration config=new Configuration().configure();
//创建会话工厂对象
SessionFactory sessionFactory=config.buildSessionFactory();
//创建会话对象(相当于开启JDBC的connection)
Session session=sessionFactory.openSession();
//创建并开始事务
session.beginTransaction();
不同hibernate版本获得会话对象session的方法不同。
@Test:测试方法
//增加对象
//创建对象并赋值,使用session.save()方法保存新增对象进数据库的表中
session.save(obj);
@After:释放资源
//提交事务
session.getTransaction().commit();
//关闭session和sessionFactory
session.close();
sessionFactory.close();