hibernet简单入门
hibernet简单入门 转自:http://blog.csdn.net/babamamawoxiangnimen/article/details/3023564
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) 订阅
暂无评论
禁止评论