Hibernate的入门配置例子
2015-03-22 01:05
316 查看
Hibernates入门
案例视图
Customer类<——CustomerService ^ | | V Hibernate Hibernate API [对象关系映射] Hibernate配置文件 | V 关系数据库 [customer表]
第一步:建立itcastHibernate工程
第二步:建立数据库itcasthibernate,可将编码格式设置成UTF-8
第三步:引入hibernate相关的jar包
antlr-2.7.6.jar——>一个语言转换工具,Hibernate利用它实现HQL到SQL的转换commons-collections-3.1.jar——>collections Apache的工具类,用来增强Java对集合的处理能力
dom4j-1.6.1.jar——>dom4j XML解析器
hibernate-jpa-2.0-api-1.0.1.Final.jar——>JPA接口开发包
hibernate3.jar——>hibernate核心包
javassist-3.12.0.GA.jar——>代码生成工具,Hibernate用它在运行时扩展Java类
jta-1.1.jar——>标准的Java事物(跨数据库)处理接口
junit-4.8.2.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.28-bin.jar
slf4j-api-1.6.1.jar——>Hibernate使用的一个日志系统
slf4j-log4j12-1.7.2.jar
第四步:持久化对象Customer.java(持久化类)
create table customer ( id int primary key, name varchar(12), age int, des text ) public class Customer { private Integer id; private String name; private Integer age; private String des; } 持久化对象的要求: 提供一个无参数 public访问控制符的构造器(默认就是) 提供一个标识属性,映射数据表主键字段 所有属性提供public访问控制符的 set get 方法 属性应尽量使用基本数据类型的包装类型
第五步: hibernate.cfg.xml
在cn.itcast.a_primer中创建hibernate.cfg.xml,hibernate.cfg.xml是hibernate的核心配置文件,用来查询数据库,配置如何操作数据库,加载映射文件等。<?xml version="1.0" encoding="UTF-8"?> <!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/itcasthibernate?useUnicode=true&characterEncoding=utf8</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 其他配置 --> <!-- 方言:用来指定hibernate操作的数据库 方言的作用是:根据方言设置值生成对应的查询语句,因为每个数据库支持的查询是不一样的 Hibernate如果不设置方言,可以进行正常的增删改语句的生成 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- hibernate操作对象用来执行操作数据库表,在控制台中显示sql语句 --> <property name="hibernate.show_sql">true</property> <!-- hibernate.hbm2ddl.auto:用来建立对象和表的关联 * create:每次都会先删除表,再创建表,问题不能保存数据 * none:默认值:有表的时候,可以直接操作,没有表就会报错,默认向表中追加数据 * update:没有表就创建表,有表就直接操作数据 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 加载映射文件 1:class="cn.itcast.a_primer.Customer"(要求类和映射文件放在同一个目录下,而且文件名要相同) 2:resource=cn/itcast/a_primer/Customer.hbm.xml(第二种方式)
<mapping resource="cn/itcast/a_primer/Customer.hbm.xml"/>--> </session-factory> </hibernate-configuration>
第六步:customer.hbm.xml创建对象-关系映射文件
3 创建对象-关系映射文件创建对象-关系映射文件(.xml),规范的写法.hbm.xml
Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句映射文件的扩展名为 .hbm.xml 这里Customer.hbm.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- 建立持久化对象和数据库表的关联关系(映射文件) * 类映射表 * 类中的属性映射表中的字段 --> <hibernate-mapping> <!-- 对象关联表 name:对象的全路径(底层使用反射) table:映射表的名称 --> <class name="cn.itcast.a_primer.Customer" table="a_customer"> <!-- 对象的属性映射表的字段 type:表示hibernate的映射类型,用来建立java类型和数据库类型的桥梁(非必填项) * 使用java类型,比如java.lang.Integer * integer name:对象中的属性名称(必填项) column:表中的字段名称(非必填项,如果不填写,则默认使用name的值作为字段名称 * generator:hibernate的生成策略(重点) sql-type="varchar(20)",指定数据库表中列的类型,默认是varchar(255) --> <id name="id" type="integer"> <column name="id"></column> <generator class="increment"></generator> </id> <property name="name" type="string"> <column name="name"></column> </property> <property name="age" column="age" type="integer"></property> <property name="des" column="des" type="string"></property> </class> </hibernate-mapping>
创建对象-关系映射文件
Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句
映射文件的扩展名为 .hbm.xml 这里Customer.hbm.xml文件
property元素:设定持久化类的属性和表字段映射
name属性:指定持久化类的属性的名字
column属性:指定表中字段的名称
type属性指定Hibernate映射类型 Hibernate映射类型是java类型与SQL类型的桥梁
注:该映射文件的规范在org.hibernate. hibernate-mapping-3.0.dtd文件中
第七步:测试单表操作的CRUD
使用测试代码进行测试,创建App的测试类,使用junit进行测试(1)hibernate的SessionFactory在初始化阶段只初始化一次即可,所有使用静
态代码块进行封装,其中Configuration是用来加载hibernate的配置文件和映射文件的,加载后可以获取SessionFactory。
private static SessionFactory sf = null;
static{ Configuration configuration = new Configuration(); configuration.configure("cn/itcast/a_primer/hibernate.cfg.xml"); configuration.addClass(Customer.class); sf = configuration.buildSessionFactory(); }
(2)新增保存:save方法
/*保存/
@Test
public void save(){
Session s = sf.openSession();
Transaction tr = s.beginTransaction();
Customer c = new Customer(); c.setName("洪七公"); c.setAge(60); c.setDes("帮助"); s.save(c); //或者使用s. persist(Object obj)方法保存 tr.commit();//实质上执行了2步操作,1:s.flush();//清理缓存,让session缓存中的数据与数据库同步,2:事务提交 s.close();//Session的缓存就没有了 }
(3)更新:update方法
/*更新/
@Test public void update(){ Session s = sf.openSession(); Transaction tr = s.beginTransaction(); Customer c = new Customer(); c.setId(3); c.setName("黄老邪"); c.setAge(59); c.setDes("药师"); s.update(c); tr.commit(); s.close(); }
(4)删除:delete方法
@Test public void delete(){ Session s = sf.openSession(); Transaction tr = s.beginTransaction(); Customer c = new Customer(); c.setId(3); s.delete(c); tr.commit(); s.close(); }
(5)查询:get和load方法
/*使用ID查询信息/
@Test public void findCustomerById(){ Session s = sf.openSession(); Transaction tr = s.beginTransaction(); Customer c = (Customer) s.get(Customer.class, 2); System.out.println(c.getId()+" "+c.getName()+" "+c.getAge()+" "+c.getDes()); tr.commit(); s.close(); }
(6)查询:query查询(支持hql语句,sql语句,qbc语句)
/*查询所有信息/
@Test public void findAllCustomerList(){ Session s = sf.openSession(); Transaction tr = s.beginTransaction(); /**使用Hql语句:操作持久对象和属性 * 复习sql语句:操作数据库表和数据库表的列*/ Query query = s.createQuery("from Customer o"); List<Customer> list = query.list(); if(list!=null && list.size()>0){ for(Customer c:list){ System.out.println(c.getId()+" "+c.getName()+" "+c.getAge()+" "+c.getDes()); } } tr.commit(); s.close(); }
相关文章推荐
- Hibernate5:Hibernate框架下的基于注解配置的多表关联的入门级例子(完整版)
- Hibernate入门配置详解及例子
- JPA入门例子(采用JPA的hibernate实现版本) --- 会伴随 配置文件:persistence.xml
- hibernate的小例子及配置
- hibernate入门配置
- Hibernate入门(二)配置元素学习
- Hibernate入门案例配置以及增、删、改、查看
- 一个hibernate 配置 mysql数据库的例子
- hibernate之概述,入门案例(配置文件,api)(01)
- 概述hibernate入门安装配置
- Hibernate学习笔记--第一篇 初学入门第一个例子
- SVNAnt 配置的入门例子
- Hibernate入门之配置文件
- 手动配置hibernate5.1入门(1)
- SVNAnt 配置的入门例子
- JPA入门例子(采用JPA的hibernate实现版本)
- Spring Security 入门(1-2)Spring Security - 从 配置例子例子 开始我们的学习历程
- 《Java从入门到放弃》框架入门篇:hibernate基本配置
- struts+hibernate+spring一个入门的实用例子
- Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)