day36 hibernate quickstart
2014-03-06 13:19
274 查看
一、hibernate优劣
hibernate框架:数据库的操作框架优点
1、比较简单
2、数据缓存:一级缓存 二级缓存 查询缓存
3、移植性比较好
缺点
1、因为sql语句是hibernate内部生成的,所以程序员干预不了,不可控
2、如果数据库特别大,不适合用hibernate
jdbc的优点和缺点
缺点
1、查询代码特别繁琐
2、重复性代码特别多,频繁的try,catch
3、数据的缓存
4、sql的移植性不好
优点
速度比较快
把控性比较好
二、hibernate结构以及加载方式
三、hibernate配置文件两种加载方式
四、hibernate curd 操作
Person.hbm.xml
<?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> <!-- 用来描述一个持久化类 name 类的全名 table 可以不写 默认值和类名一样 catalog 数据库的名称 一般不写 --> <class name="cn.zjy.domain.Person"> <!-- 标示属性 和数据库中的主键对应 name 属性的名称 column 列的名称 --> <id name="pid" column="pid" length="200" type="java.lang.Long"> <!-- 主键的产生器 就该告诉hibernate容器用什么样的方式产生主键 --> <generator class="increment"></generator> </id> <!-- 描述一般属性 --> <property name="pname" column="pname" length="20" type="java.lang.String"> </property> <property name="psex" column="psex" length="10" type="java.lang.String"> </property> </class> </hibernate-mapping>hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- 一个session-factory只能连接一个数据库 --> <session-factory> <!-- 数据库的用户名 --> <property name="connection.username">root</property> <!-- 密码 --> <property name="connection.password">345300</property> <!-- url --> <property name="connection.url"> jdbc:mysql://localhost:3306/day36 </property> <!-- 作用:根据持久化类和映射文件生成表 validate create-drop create update --> <property name="hbm2ddl.auto">update</property> <!-- 显示hibernate内部生成的sql语句 --> <property name="show_sql">true</property> <mapping resource="cn/zjy/domain/Person.hbm.xml" /> </session-factory> </hibernate-configuration>Person.java
package cn.zjy.domain; import java.io.Serializable; public class Person implements Serializable{ private Long pid; private String pname; private String psex; public Person(){} public Person(String pname){ this.pname = pname; } 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 getPsex() { return psex; } public void setPsex(String psex) { this.psex = psex; } }
Hibernatebase1.java
package cn.zjy.test; import java.util.List; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.classic.Session; import org.junit.Test; import cn.zjy.domain.Person; import cn.zjy.utils.HiberanteUtils; public class Hibernatebase1 { @Test public void test1() { Session session = HiberanteUtils.sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = new Person(); person.setPname("lisi"); person.setPsex("nan"); session.save(person); transaction.commit(); session.close(); } @Test public void test2() { Session session = HiberanteUtils.sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = (Person)session.get(Person.class, 1L);//这里要注意pid类型一定要匹配 session.delete(person); transaction.commit(); session.close(); } @Test public void test3() { Session session = HiberanteUtils.sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); //同样也可以新建一个person类,但是pid一定要一样 Person person = (Person)session.get(Person.class, 2L); person.setPname("zhangsan"); session.update(person); transaction.commit(); session.close(); } @Test public void test4() { Session session = HiberanteUtils.sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); List<Person> list = session.createQuery("from Person").list(); for(Person p:list) { System.out.println(p.getPname()); } transaction.commit(); session.close(); } }
相关文章推荐
- Hibernate QuickStart
- MyEclipse Hibernate Quickstart
- Hibernate quick start
- Canu Quick Start(快速使用Canu)
- Ibatisnet Quick Start
- Confluent介绍(二)--confluent platform quickstart
- [初学ORACLE] Backup and Recovery Quick Start Guide 此文紧作为此书的读后感
- Numpy Quickstart tutorial
- Dojo QuickStart 快速入门教程 (4) 简单的测试框架
- nunit使用指南之—NUnit Quick Start
- http://chs.gotdotnet.com/quickstart/aspplus/
- Programming Quick Start Guide翻译
- WPF QuickStart系列之线程模型(Thread Model)
- Azkaban Quick Start
- Quartz.NET - Quartz.NET Quick Start Guide
- Spark快速入门指南(Quick Start Spark)
- 【翻译】eXpressAppFramework QuickStart 业务模型设计(八)——创建对象后初始化属性
- vue 学习笔记一之Quick Start
- 5.2 Android Basic QuickStart Widgets&Other View Gallery
- A Quick Start Guide to iBATIS DataMapper