hibernate简单入门

来源:互联网 发布:女程序员标准装扮 编辑:程序博客网 时间:2024/05/13 00:16

ORMapping:对象关系映射。

ORMaping模式:表示层->业务逻辑层->持久化层(ORM组件,负责封装数据库访问的细节)->数据库。

Hibernet是一个ORMapping的实现,其主要功能就是以对象的形式操作数据库。

ORMapping的优点:1.提高生产率(productivity).2.可维护性(maintainability).3.更好性能(performance).4.厂商独立性(vendar independence)

基于RDB的持久层可选方案:1.SQL/JDBC. 2.Entity Bean. 3.JDO. 4.Apache OJB. 5.ibatis. 6.hibernet

 

hibernate的入门实例

 

步骤:

1.创建数据库表(person表).

 

CREATE TABLE person
(
 id varchar(32) not null primary key ,
 name varchar(20) not null ,
 password varchar(20) not null ,
 sex varchar(2) ,
 email varchar(30)
) ;

2.创建表与数据库的关系(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“>

<!– Generated by MyEclipse Hibernate Tools.                   –>
<hibernate-configuration>

<session-factory>
 <property name=”myeclipse.connection.profile”>Oracle 9</property>
 <property name=”connection.url”>jdbc:oracle:thin:@localhost:1521:MLDN</property>
 <property name=”connection.username”>scott</property>
 <property name=”connection.password”>tiger</property>
 <property name=”connection.driver_class”>oracle.jdbc.driver.OracleDriver</property>
 <property name=”dialect”>org.hibernate.dialect.Oracle9Dialect</property>
 <property name=”show_sql”>true</property>
 <mapping resource=”org/lxh/hibernate/demo01/Person.hbm.xml” />
</session-factory>

</hibernate-configuration>

 

3.编写POJO类(Person class)。

 

package org.lxh.hibernate.demo01;
// POJO类
public class Person {
 // 写入若干属性
 private String id ;
 private String name ;
 private String password ;
 private String sex ;
 private String email ;
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
}

4.创建类与表的HBM映射(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” >

<!– DO NOT EDIT: This is a generated file that is synchronized –>
<!– by MyEclipse Hibernate tool integration.                   –>
<!– Created Thu Nov 09 16:06:12 CST 2006                         –>
<hibernate-mapping package=”org.lxh.hibernate.demo01”>

    <class name=”Person” table=”PERSON”>
        <id name=”id” column=”ID” type=”string”>
            <generator class=”uuid.hex”/>
        </id>
 
        <property name=”name” column=”NAME” type=”string”  not-null=”true” />
        <property name=”password” column=”PASSWORD” type=”string”  not-null=”true” />
        <property name=”sex” column=”SEX” type=”string” />
        <property name=”email” column=”EMAIL” type=”string” />
    </class>
   
</hibernate-mapping>

5.编写功能类(PersonOperate class)和测试类(TestOP class)。

 

package org.lxh.hibernate.demo01;

import Java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

/*
 * 具体操作Hibernate的类:
 * 增加、删除、修改、按ID查询、模糊查询、查询全部操作
 * */
public class PersonOperate {
 // 在Hibernate中,所有的操作都是通过Session完成
 // 此Session不同于JSP的Session
 private Session session = null ;
 
 // 在构造方法之中实例化session对象
 public PersonOperate()
 {
  // 找到Hibernate配置
  Configuration config = new Configuration().configure() ;
  // 从配置中取出SessionFactory
  SessionFactory factory = config.buildSessionFactory() ;
  // 从SessionFactory中取出一个Session
  this.session = factory.openSession() ;
 }
 
 // 所有的操作都是通过session进行的
 // 向数据库中增加数据
 public void insert(Person p)
 {
  // 开始事务
  Transaction tran = this.session.beginTransaction() ;
  // 执行语句
  this.session.save(p) ;
  // 提交事务
  tran.commit() ;
  // 关闭Session
  this.session.close() ;
 }
 
 // 修改
 public void update(Person p)
 {
  // 开始事务
  Transaction tran = this.session.beginTransaction() ;
  // 执行语句
  this.session.update(p) ;
  // 提交事务
  tran.commit() ;
 }
 
 // 按ID查询:推荐使用HQL —— 是Hibernate官方推荐的查询语言
 public Person queryById(String id)
 {
  Person p = null ;
  // 使用Hibernate查询语言
  String hql = “FROM Person as p WHERE p.id=?” ;
  // 通过Query接口查询
  Query q = this.session.createQuery(hql) ;
  q.setString(0,id) ;
  List l = q.list() ;
  Iterator iter = l.iterator() ;
  if(iter.hasNext())
  {
   p = (Person)iter.next() ;
  }
  return p ;
 }
 
 // 删除数据
 // Hibernate2、Hibernate 3通用的删除
 // 使用此方法删除数据之前,必须先查找到数据对象,性能呢?
 public void delete(Person p)
 {
  Transaction tran = this.session.beginTransaction() ;
  // 执行语句
  this.session.delete(p) ;
  // 提交事务
  tran.commit() ;
 }
 
 // 在Hibernate 3之中根据HQL中的语句进行了修改,增加了删除指令
 public void delete(String id)
 {
  String hql = “DELETE Person WHERE id=?” ;
  Query q = this.session.createQuery(hql) ;
  // 把参数设置
  q.setString(0,id) ;
  // 执行更新语句
  q.executeUpdate() ;
  // 进行事务处理
  this.session.beginTransaction().commit() ;
 }
 
 // 查询全部数据,写HQL
 public List queryAll()
 {
  List l = null ;
  String hql = “FROM Person as p” ;
  Query q = this.session.createQuery(hql) ;
  l = q.list() ;
  return l ;
 }
 
 // 模糊查询
 public List queryByLike(String cond)
 {
  List l = null ;
  String hql = “FROM Person as p WHERE p.name like ?” ;
  Query q = this.session.createQuery(hql) ;
  q.setString(0,”%”+cond+”%”) ;
  l = q.list() ;
  return l ;
 }
}

package org.lxh.hibernate.demo01;

import java.util.Iterator;
import java.util.List;

public class TestPO {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO 自动生成方法存根
  // 生成POJO类实例化对象
  Person p = new Person() ;
  // p.setId(“LXH”) ;
  p.setName(“李兴华”) ;
  p.setPassword(“www.mldn.cn“) ;
  p.setSex(“男”) ;
  p.setEmail(“mldnqa@163.com“) ;
  PersonOperate po = new PersonOperate() ;
  po.insert(p) ;
  // Person p = po.queryById(“LXH”) ;
  // System.out.println(p.getName()) ;
  // po.delete(“MLDN”) ;
  /*
  List l = po.queryByLike(“乐”) ;
  Iterator iter = l.iterator() ;
  while(iter.hasNext())
  {
   Person p = (Person)iter.next() ;
   System.out.println(p.getName()) ;
  }
  */
 }

}

 

 

0 0
原创粉丝点击