您的位置:首页 > 产品设计 > UI/UE

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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA hibernate