Hibernate的入门配置例子
来源:互联网 发布:消防职业技能鉴定软件 编辑:程序博客网 时间:2024/06/15 09:00
Hibernates入门
案例视图
Customer类<——CustomerService ^ | | VHibernate 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方法
/*更新/
@Testpublic 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方法
@Testpublic 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查询信息/
@Testpublic 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语句)
/*查询所有信息/
@Testpublic 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();}
- Hibernate的入门配置例子
- Hibernate入门配置详解及例子
- SVNAnt 配置的入门例子
- SVNAnt 配置的入门例子
- Hibernate入门小例子的总结
- hibernate入门配置的错误
- hibernate入门的基本配置
- 一个hibernate 配置 mysql数据库的例子
- Hibernate5:Hibernate框架下的基于注解配置的多表关联的入门级例子(完整版)
- Hibernate入门之自己写的小例子的总结
- struts+hibernate+spring入门例子
- struts+hibernate+spring一个入门的实用例子
- struts+hibernate+spring一个入门的实用例子(上)
- struts+hibernate+spring一个入门的实用例子(下)
- struts+hibernate+spring一个入门的实用例子
- 一个简单的Struts Hibernate入门例子(上)
- 一个简单的Struts Hibernate入门例子(下)
- struts+hibernate+spring一个入门的实用例子(转)
- 《JAVA与模式》之建造模式
- 如何得到数据库中所有表字段及字段中文描述
- SpringMVC+Mybatis+Maven框架配置文件介绍
- Android 编程下 Touch 事件的分发和消费机制
- SQL SERVER中带参数的返回
- Hibernate的入门配置例子
- Android之常用Tools【介绍及使用】
- 物联网入口之一Android蓝牙4.0
- Insert Interval
- Android Studio 快捷键整理分享
- [Leetcode] 53. Maximum Subarray
- Android Studio Mac 快捷键整理分享
- 《JAVA与模式》之原型模式
- MAC Intellij IDEA 常用快捷键(本人亲自测试过)