设为首页 加入收藏

TOP

【Hibernate一】概述及入门(一)
2015-11-21 02:07:56 来源: 作者: 【 】 浏览:3
Tags:Hibernate 概述 入门
Hibernate学习框架: 1、基本部分
crud的操作
主键的生成机制
类型
持久化类
映射文件 *.hbm.xml
配置文件 hibernate.cfg.xml
2、关系部分
一对多的单项
一对多的双向
多对多的双向
一对一
在many-to-one加一个属性unique="true"
cascade 级联 inverse 维护关系 中lazy,fetch
3、性能的部分
维护关系 inverse懒加载 lazy抓取策略 fetch一级缓存 二级缓存 查询缓存
4、查询
hql
条件查询

一。Hibernate概述: 在servlet中,操作数据库我们使用的是jdbc,为了更加方便的操作数据库,我们可以使用ORM框架,ORM:Object Relation Mapping,对象关系映射,目的就是像操作java普通的类一样来操作数据库。显然Hibernate是ORM框架中做得比较好的一款!
Hibernate的有点: 面向对象数据库 编程;代码书写更加简洁;具有缓存机制,提高效率;
二.入门: 准备条件: 1.导入相关的包 \ 2.hibernate.cfg.xml:(通常位于scr根目录下) 数据库要自己先新建好!!
'1.0' encoding ='utf-8'?>
"connection.username" >root "connection.password" >root "connection.url"> jdbc: mysql:// localhost:3306/hibernate512 "dialect" >org.hibernate.dialect.MySQLDialect "connection.driver_class" > com.mysql.jdbc.Driver "hbm2ddl.auto">update "show_sql"> true "format_sql"> true "com/oteman/hibernate/domain/Person.hbm.xml" />

3.要操作的实体bean(Person为例)
package com.oteman.hibernate.domain;
public class Person { Long pid; String pname; String pgender; public Long getPid() { return pid ; } public void setPid(Long pid) { this.pid = pid; } public String getPname() { return pname ; } public void setPname(String pname) { this.pname = pname; } public String getPgender() { return pgender ; } public void setPgender(String pgender) { this.pgender = pgender; }
}


4.要操作的实体与数据库表的对应关系Person.hbm.xml (通常与实体bean在同一个目录)
"1.0" encoding ="utf-8"?>
"com.oteman.hibernate.domain.Person" table= "Person" > "pid" column = "pid" length= "5" type= "java.lang.Long" > "increment"> "pgender" column = "gender" length= "10" type= "string"> "pname" column = "name" length= "20" >


5.根据配置文件建立表
@Test public void testCreateTable(){ Configuration configuration= new Configuration(); configuration.configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); }


6.增删改查:
/** * 向数据库中增加数据 */ @Test public void add(){
Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person p= new Person(); p.setPgender( "男"); p.setPname( "张三"); session.save(p); transaction.commit(); session.close(); } /** * 更新数据, hibernate具有快照机制,会将对象前后的值进行比较,如果发现对象的属性没有发生改变,那么就不进行update操作,可以观察 sql语句; */ @Test public void update(){ Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person=(Person) session.get(Person. class, 2l); person.setPname( "哈哈"); /*//第二种形式: Person p=new Person(); p.setPgender("男"); p.setPid(2L); p.setPname("李四");*/ session.update(person); transaction.commit(); session.close(); } /** * 删除数据 */ @Test public void delete(){ Session session= sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person=(Person) session.get(Person. class, 1l); session.delete(person); transaction.commit(); session.close(); } /** * 查询所有! */ @Test public void query(){ Session session= sessionFactory.openSession(); List list = session.createQuery("from Person").list(); System. out.println(list.size()); session.close(); }

7.Generator主键产生机制
public class GeneratroTest extends HibernateUtils{ /** * * 1. * increament形式产生的 sql语句 * Hibernate: select max( pid) from person Hibernate: insert
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ocp-v13-682 下一篇搭建高可用MongoDB集群副本

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: