hibernate培训教程(共59张).pptx
《hibernate培训教程(共59张).pptx》由会员分享,可在线阅读,更多相关《hibernate培训教程(共59张).pptx(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、因为专注所以专业 因为专业所以领先q部门:公共产品与研发部q讲师:谭昌辉课程目标课程目标n熟悉Java、SQL、JDBC,掌握面向对象的开发方法,并有实际项目开发经验n理解O/R Mapping原理,掌握Hibernate开发的相关知识,并能使用Hibernate进行实际项目开发培训内容持久化层O/R Mapping一Hibernate入门二Hibernate映射声明三持久化对象的状态和生命周期四Hibernate查询三五Hibernate最佳实践六一、持久化层O/R Mapping基于B/S的典型三层架构在轻量级J2EE分层架构中,Hibernate处于持久层。在领域驱动开发方法论里面,Hi
2、bernate将作为域模型的框架如何进行对象关系数据库的匹配public class User private String name; private String password;private List address;create table tbl_user (name varchar(255) not null , password varchar(255),.primary key (name) 如何进行对象如何进行对象关系数据库的匹配?关系数据库的匹配?对象对象关系数据库关系数据库类的属性(基本类型)表的列类表1:n/n:1外键n:m关联表继承单表继承、具体表继承、类表继承基
3、于关系数据库的持久层可选方案优点优点缺点缺点SQL/JDBC成熟,流行,使用DAO模式代码烦杂,可读性差,维护困难,移植困难Entity BeanCMP(EJB1.1之后),未来的EJB3错误的设计。不可移植,依赖性强,不可序列化,不支持多态的关联查询JDO简单、透明、标准不够成熟Apache OJB性能、稳定性,属于Apache 基金组织文档资源太少,支持标准太多成了负担(ODMG 3.0,JDO1.0)iBATIS可以控制更多的数据库操作细节。实用于遗留系统的改造和对既有数据库的复用。持久层封装不够彻底,只是一个DBHelper。Hibernate成熟、流行、功能强大。并逐渐发展成Java
4、 持久层事实上的标准。不够透明O/R Mapping -What? Why?什么是O/R Mapping? 对象-关系映射是一门非常实用的工程技术,它实现了Java应用中的对象到关系数据库中的表的自动的(和透明的)持久化,使用元数据(meta data)描述对象与数据库间的映射。O/R Mapping的优点q提高生产率(Productivity)q可维护性(Maintainability)q厂商独立性(Vendor independence)培训内容持久化层O/R Mapping一Hibernate入门二Hibernate映射声明三持久化对象的状态和生命周期四Hibernate查询三五Hibe
5、rnate最佳实践六Hibernate介绍Hibernate概述 Hibernate是非常优秀、成熟的O/R Mapping框架。它提供了强大的对象和关系数据库映射以及查询功能。Hibernate优势q开源(LGPL)q成熟q流行(约13 000 downloads/month)q自定义APIqJBoss 将用Hibernate3实现Entity BeansHibernate开发步骤一、持久化类的设计二、持久化类和关系数据库的映射三、应用的开发持久化Java类必须遵循的原则q为类的持久化类字段申明访问方法(get/set)。Hibernate对JavaBeans风格的属性实行持久化。q实现一个
6、默认的构造方法(constructor)。这样的话Hibernate就可以使用Constructor.newInstance()来实例化它们。q如果是集合类型的属性,它的类型必须定义为集合的接口。例如:List、Set。q提供一个标识属性(identifier property)。如果没有该属性,一些功能不起作用,比如:级联更新(Cascaded updates)Session.saveOrUpdate()。持久化类和关系数据库的映射XDoclet:它通过在Java源代码中加入特定的JavaDoc tag,从而为其添加特定的附加语义,之后通过XDoclet工具对代码中JavaDoc Tag进行
7、分析,自动生成与代码对应的配置文件(http:/ 从数据库中已有的表结构中生成Hibernate映射文件。当前版本是2.1可以去http:/boss.bekk.no/boss/middlegen下载。Hibernate核心接口Configuration概述:Configuration 类负责管理Hibernate 的配置信息。它包括如下内容:qHibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等。qHibernate映射文件(*.hbm.xml)。Hibernate配置的两种方法:q属性文件(hibernate.propertie
8、s)。调用代码:Configuration cfg = new Configuration(); qXml文件(hibernate.cfg.xml)。调用代码:Configuration cfg = new Configuration().configure();Configuration例子数据库连接的配置hibernate.dialect = net.sf.hibernate.dialect.MySQLDialecthibernate.connection.driver_class = com.mysql.jdbc.Driverhibernate.connection.url = jdbc
9、:mysql:/localhost/hibernatehibernate.connection.username = roothibernate.connection.password数据库连接池的配置DBCP(App Server连接池首选)hibernate.connection.provider_class = net.sf.hibernate.connection.DBCPConnectionProvider配置DBCP连接池其它hibernate.show_sql = truehibernate.jdbc.fetch_size = 50hibernate.jdbc.batch_siz
10、e = 25SessionFactory概述:应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它在多个应用线程间进行共享。通常情况下,整个应用只有唯一的一个会话工厂例如在应用初始化时被创建。然而,如果你使用Hibernate访问多个数据库,你需要对每一个数据库使用一个会话工厂。 会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。调用代码:SessionFactory sessionFactory = cfg.buildSessionFactory();Session(会话)概述:qSession不是线程安全的,它代表与数据库之间的一
11、次操作,它的概念介于Connection和Transaction之间。q Session也称为持久化管理器,因为它是与持久化有关的操作接口。q Session通过SessionFactory打开,在所有的工作完成后,需要关闭。q它与Web层的HttpSession没有任何关系。调用代码Session session = sessionFactory.openSession();Transaction(事务)概述: 它将应用代码从底层的事务实现中抽象出来这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)允许应用通过一组一致的API控制事务边界。这有助于保
12、持Hibernate应用在不同类型的执行环境或容器中的可移植性。调用代码: Transaction tx = session.beginTransaction();注:使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)。Query概述:Query(查询)接口允许你在数据库上执行查询并控制查询如何执行。查询语句使用HQL或者本地数据库的SQL方言编写。调用代码:Query query = session.createQuery(“from User”); 用户的例子持久化类User.javapublic class Use
13、r private Long id; private String name; private Date birthday; private String email; public User() public User(String name,Date birthday,String email) .Get/Set映射文件映射文件User.hbm.xml 应用UserTest.javapublic void testCreate() throws Exception Configuration cfg = new Configuration(); cfg.addURL(UserTest.cl
14、ass.getResource(/com/test/um/User.hbm.xml); SessionFactory sessionFactory = cfg.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); SimpleDateFormat format = new SimpleDateFormat(yyyy-mm-dd); User user = new User(Jack,format.parse(1980-
15、04-12),J); session.save(user); mit(); assertNotNull(user.getId(); session.clear(); User user_2 = (User)session.get(User.class,user.getId(); assertNotNull(user_2); session.close(); 应用UserTest.java保存用户:session.save(user);修改用户:session.update(user);保存或修改用户:session.saveOrUpdate(user);删除用户:session.delete(
16、user);删除所有用户:session.delete(“from User ”);查询用户名为“test”的用户:Query query = session.createQuery(from User where user.name = :name);query.setParameter(“test,user.getName(); User findUser = (User) query.list().get(0);培训内容持久化层O/R Mapping一Hibernate入门二Hibernate映射声明三持久化对象的状态和生命周期四Hibernate查询三五Hibernate最佳实践六Hi
17、bernate映射申明(Mapping declaration)hibernate-mapping一、类层次。class1、主键。id2、基本类型。property3、自定义类。many-to-one | one-to-one4、集合。set | list | map | array4.1、one-to-many4.2、many-to-many5、子类。subclass | joined-subclass6、其它。component | any等二、查询语句。Query说明:一个Hibernate-mapping中可以同时定义多个类。Query非常简单,主要是用来放置查询语句,便于对数据库查询
18、的统一管理和优化。hibernate-mapping(1)、schema(可选):数据库Schema Name(2)、default-cascade(可选,默认为none):默认的级联风格(3)、auto-import(可选,默认为true):是否在查询中只使用类名。不用加package名字。(4)、package(可选),如果该映射文件中定义的类名不包含package,则使用这里定义的package作为类名的前缀。一、类层次class1、主键-id name=propertyName (1) type=typename (2) column=column_name (3) unsaved-v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hibernate 培训 教程 59
限制150内