Hibernate是由徐培成老师授课的,传智播客的老师正是我要寻找的那种老师。有丰富的工作经验和项目架构经验。而且他们的教学经验也很丰富!老徐讲课十分精细,他编写的熟练程度也很让人吃惊!
Hibernate,以前老方在讲解JAVAWEB的时候有给我们编写过hibernate的简易实现原理——一对多关系的ORM。当时感觉hibernate并不难,今天学习其实它本来就不难。Hibernate的最困难的地方就是它的那个配置文件。因为hibernate正靠那个配置文件来进行ORM的,也是靠这个配置文件来进行其他的操作,比如创建表格,限制对表或字段的操作…。
为什么要使用hibernate?老徐今天举了一个十分好的例子:如果你的表中有100个字段,使用JDBC去插入记录、更新记录…这是非常恐怖的。如果插入或更新记录出错了呢?一个一个字段的对?想都不感想,如果以后数据库字段要全部添加后缀名呢!~~哇哇哇,受不了了。Ok,hibernate可以很好的解决JDBC的“漏洞”。
这个配置文件我把它看成是hibernate的核心!
下面我来举个简单的例子,使用hibernate对一个DOMAIN对象进行自动存取。
1.定义一个Customer的domain,从学习数据库至今使用顾客与订单做的讲解比较多,因为这种逻辑关系可以很好的阐明多表的关系,我们目前只使用一个表:
public class Customer {
private int id;
private String name;
private int gender;
private Date birthday;
private String email;
private String phone;
private String address;
//下面是getter和setter方法
…
}
|
2.在Customer的类路径下添加hibernate的映射文件(元数据文件),映射文件名为Customer.hbm.xml,这样在调用“ConfigurationObj. .addClass(Customer.class);”hibernate框架可以自动加载它。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--
1.name 指定类名
2.table 指定表名,如果忽略则默认为类名
-->
<class name="cn.itcast.cc.hibernate.persistence.Customer" table="customers" lazy="false">
<!--
1.name OID的标识名
2.column 对应表的主键
3.type hibernate中的类型,对应JAVA类型为java.lang.Integer/int,对应SQL类型为INTEGER
-->
<id name="id" column="id" type="integer">
<!--
1.class 设置id字段为自增、主键
-->
<generator class="increment"></generator>
</id>
<!--
1.name 对应类的属性
2.column 对应表的字段,如果不指定access。此处的name只为hibernate获取读取字段的方法。
比如name="abcde",hibernate拼出getAbcde和setAbcde,而此时我们可以添加这两个方法,用于实现特殊功能。
3.type hibernate中的类型
4.access hibernate直接访问字段,而不通过getter和setter。
-->
<property name="name" column="name" type="string" access="field"/>
<property name="gender" column="gender" type="integer" />
<property name="birthday" column="birthday" type="date" />
<property name="phone" column="phone" type="string" />
<property name="email" column="email" type="string" />
<property name="address" column="address" type="string" />
</class>
</hibernate-mapping>
|
3.hibernate的属性文件,使用时请将里面的中文行全部删除:
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/test
hibernate.connection.username=root
hibernate.connection.password=root
#hibernate使用的本地化特性,比如MySQL和Oracle的分页技术不同。
#hibernate会根据这项设置,自动完成分页技术。
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
#回显SQL语句,hibernate根据元数据文件自动生成SQL语句并执行。
hibernate.show_sql=true
#严重注意,如果指定为可以自动创建表,那么每次运行hibernate都会删除并重新创建表。
hibernate.hbm2ddl.auto=create
|
4.我们需要向工程中导入hibernate目录下的jar文件。
1).hibernate3.jar.
2).lib/required/*.jar
3).3rd/*.jar
5.编写测试类:
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import cn.itcast.cc.hibernate.persistence.Customer;
public class Main {
private static SessionFactory sefac = null;
// 当类被加载时,获取SessionFactory。
static {
//创建Configuration时,默认加载hibernate.properties文件。
//也可以调用addResource方法,将配置文件加载进来。
Configuration config = new Configuration();
// 将ORM中的O在此添加到
config.addClass(Customer.class);
sefac = config.buildSessionFactory();
}
public static void main(String[] args) {
// 创建一个customer对象
Customer customer = new Customer();
customer.setName("changcheng");
customer.setGender(1);
customer.setBirthday(new Date());
customer.setPhone("13998689955");
customer.setEmail("changcheng@google.com");
customer.setAddress("China");
// 调用保存
save(customer);
// 调用查询
find(1);
}
private static void save(Customer customer){
//获取session相当于获取了一个连接
Session session = sefac.openSession();
//此处必须使用事务,否则不能保存数据。
Transaction tr = session.beginTransaction();
//直接保存
session.save(customer);
//提交事务
tr.commit();
//关闭会话
session.close();
}
private static void find(Integer id){
//获取session相当于获取了一个连接
Session session = sefac.openSession();
Transaction tra = session.beginTransaction();
//直接保存
Customer customer = (Customer) session.load(Customer.class, id);
tra.commit();
//关闭会话
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
传智播客 hibernate PPT 很经典
传智播客Hibernate课件.ppt
标题"传智播客hibernate源码"暗示了这是一个关于Hibernate框架的源代码学习资源,可能包含了对Hibernate框架内部机制的深入解析,以及如何在实际项目中应用Hibernate的相关示例。 描述中的内容重复,进一步确认了这...
传智播客hibernate教程.ppt传智播客hibernate教程.ppt传智播客hibernate教程.ppt传智播客hibernate教程.ppt传智播客hibernate教程.ppt
【描述】"传智播客\传智播客hibernate\01_传智播客hibernate教程_hibernate介绍与动手入门体验" 提示这可能是一个由教育机构传智播客提供的系列教程的第一部分,专注于Hibernate的基本概念和实际操作。在这个教程中...
【压缩包子文件的文件名称列表】"00 传智播客hibernate源码"可能包含了一系列逐步讲解的材料,如课件、笔记、代码示例等,这些内容可能按照教学顺序组织,从基础概念到高级特性的实现,引导学习者一步步理解...
通过以上讲解,我们可以看到,传智播客的Hibernate教程覆盖了从基础到进阶的各个方面,为初学者提供了全面的学习资源。掌握Hibernate能够极大地提升Java开发中的数据库操作效率,是Java开发者必备的技能之一。通过...
【传智播客李勇hibernate PPT】是一份由知名教育机构传智播客...通过学习这份【传智播客李勇hibernate PPT】,开发者不仅能了解Hibernate的基础知识,还能掌握实际项目中使用Hibernate的技巧,提升开发效率和代码质量。
【传智播客李勇hibernate】课程详解了ORM框架Hibernate的核心概念和技术,适合初学者...通过【传智播客李勇hibernate】课程,学习者能够全面掌握Hibernate框架的使用,为开发高效、稳定的Java企业级应用打下坚实基础。
传智播客Hibernate课件
【标题】"传智播客hibernate ppt"是一份由知名教育机构传智播客推出的关于Hibernate框架的培训教程,由资深讲师李勇主讲。这个PPT内容经典,深受学习者好评,旨在帮助开发者深入理解和掌握Hibernate这一强大的Java...
本资料主要基于“传智播客hibernate源码.rar”进行深入剖析,旨在帮助你理解Hibernate的核心机制,提升你的编程能力。 一、Hibernate简介 Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常...
传智播客 hibernate 完全学习文档,没有更好
传智播客李勇hibernate源码1-20课,目录如下:01_hibernate介绍与动手入门体验;02_hibernate入门案例的细节分析; 03_hibernate入门案例的代码优化; 04_Session接口及get|load|persist方法 05_实体对象的三种状态...
通过传智播客的这个教程,初学者将获得对Hibernate基础的全面理解,特别是如何运用到实际的入门案例中。 【描述】:“02_传智播客hibernate教程_hibernate入门案例的细节分析” 此教程详细剖析了Hibernate入门案例...