想飞就别怕摔

大爷的并TM骂人

初学Hibernate3

  我只用的是Eclipse3.2+MyEclipse6.0+JDK6+Tomcat+MSSQL-2000。
1.首先建立数据库表(非常简单就不用说了)。
DROP TABLE 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.启动Eclipse,切到MyEclipse Database Explorer透视图,在左窗体中点menu->新建,在Drive Temple中选择你的模板,然后起个名字。在Connection URL中填入你的链接如:Mssql:jdbc:microsoft:sqlserver://localhost:1433。填入你的数据库名、密码(可填可不填)。在Drive JARs中加入你的数据库驱动类库。

3.在Eclipse中建立一个Web工程
选中当前项目,点菜单栏中的MyEclipse->project Capabilities->ADD Hibernate Capabilities。
MyEclipse会自动生成。.cfg.xml文件。代码如下:
 1<?xml version='1.0' encoding='UTF-8'?>
 2<!DOCTYPE hibernate-configuration PUBLIC
 3          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5
 6<!-- Generated by MyEclipse Hibernate Tools.                   -->
 7<hibernate-configuration>
 8
 9<session-factory>
10    <property name="myeclipse.connection.profile">Oracle 9</property>
11    <property name="connection.url">jdbc:oracle:thin:@localhost:1521:MLDN</property>
12    <property name="connection.username">scott</property>
13    <property name="connection.password">tiger</property>
14    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
15    <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
16    <property name="show_sql">true</property>
17    <mapping resource="org/lxh/hibernate/demo01/Person.hbm.xml" />
18</session-factory>
19
20</hibernate-configuration>

4.切换到MyEclipse Database Explorer透视图,找到你的表后右键Hibernate Reverse Engineering,接下来可以选择自动生成pojo和映射文件。下面是这两个文件的代码:
pojo: person.java
 1ackage org.lxh.hibernate.demo01;
 2// POJO类
 3public class Person {
 4    // 写入若干属性
 5    private String id ;
 6    private String name ;
 7    private String password ;
 8    private String sex ;
 9    private String email ;
10    public String getEmail() {
11        return email;
12    }

13    public void setEmail(String email) {
14        this.email = email;
15    }

16    public String getId() {
17        return id;
18    }

19    public void setId(String id) {
20        this.id = id;
21    }

22    public String getName() {
23        return name;
24    }

25    public void setName(String name) {
26        this.name = name;
27    }

28    public String getPassword() {
29        return password;
30    }

31    public void setPassword(String password) {
32        this.password = password;
33    }

34    public String getSex() {
35        return sex;
36    }

37    public void setSex(String sex) {
38        this.sex = sex;
39    }

40}

41

映射文件: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.java
  1package org.lxh.hibernate.demo01;
  2
  3import java.util.Iterator;
  4import java.util.List;
  5
  6import org.hibernate.Query;
  7import org.hibernate.Session;
  8import org.hibernate.SessionFactory;
  9import org.hibernate.Transaction;
 10import org.hibernate.cfg.Configuration;
 11
 12/*
 13 * 具体操作Hibernate的类:
 14 * 增加、删除、修改、按ID查询、模糊查询、查询全部操作
 15 * */

 16public class PersonOperate {
 17    // 在Hibernate中,所有的操作都是通过Session完成
 18    // 此Session不同于JSP的Session
 19    private Session session = null ;
 20    
 21    // 在构造方法之中实例化session对象
 22    public PersonOperate()
 23    {
 24        // 找到Hibernate配置
 25        Configuration config = new Configuration().configure() ;
 26        // 从配置中取出SessionFactory
 27        SessionFactory factory = config.buildSessionFactory() ;
 28        // 从SessionFactory中取出一个Session
 29        this.session = factory.openSession() ;
 30    }

 31    
 32    // 所有的操作都是通过session进行的
 33    // 向数据库中增加数据
 34    public void insert(Person p)
 35    {
 36        // 开始事务
 37        Transaction tran = this.session.beginTransaction() ;
 38        // 执行语句
 39        this.session.save(p) ;
 40        // 提交事务
 41        tran.commit() ;
 42        // 关闭Session
 43        this.session.close() ;
 44    }

 45    
 46    // 修改
 47    public void update(Person p)
 48    {
 49        // 开始事务
 50        Transaction tran = this.session.beginTransaction() ;
 51        // 执行语句
 52        this.session.update(p) ;
 53        // 提交事务
 54        tran.commit() ;
 55    }

 56    
 57    // 按ID查询:推荐使用HQL —— 是Hibernate官方推荐的查询语言
 58    public Person queryById(String id)
 59    {
 60        Person p = null ;
 61        // 使用Hibernate查询语言
 62        String hql = "FROM Person as p WHERE p.id=?" ;
 63        // 通过Query接口查询
 64        Query q = this.session.createQuery(hql) ;
 65        q.setString(0,id) ;
 66        List l = q.list() ;
 67        Iterator iter = l.iterator() ;
 68        if(iter.hasNext())
 69        {
 70            p = (Person)iter.next() ;
 71        }

 72        return p ;
 73    }

 74    
 75    // 删除数据
 76    // Hibernate2、Hibernate 3通用的删除
 77    // 使用此方法删除数据之前,必须先查找到数据对象,性能呢?
 78    public void delete(Person p)
 79    {
 80        Transaction tran = this.session.beginTransaction() ;
 81        // 执行语句
 82        this.session.delete(p) ;
 83        // 提交事务
 84        tran.commit() ;
 85    }

 86    
 87    // 在Hibernate 3之中根据HQL中的语句进行了修改,增加了删除指令
 88    public void delete(String id)
 89    {
 90        String hql = "DELETE Person WHERE id=?" ;
 91        Query q = this.session.createQuery(hql) ;
 92        // 把参数设置
 93        q.setString(0,id) ;
 94        // 执行更新语句
 95        q.executeUpdate() ;
 96        // 进行事务处理
 97        this.session.beginTransaction().commit() ;
 98    }

 99    
100    // 查询全部数据,写HQL
101    public List queryAll()
102    {
103        List l = null ;
104        String hql = "FROM Person as p" ;
105        Query q = this.session.createQuery(hql) ;
106        l = q.list() ;
107        return l ;
108    }

109    
110    // 模糊查询
111    public List queryByLike(String cond)
112    {
113        List l = null ;
114        String hql = "FROM Person as p WHERE p.name like ?" ;
115        Query q = this.session.createQuery(hql) ;
116        q.setString(0,"%"+cond+"%") ;
117        l = q.list() ;
118        return l ;
119    }

120}

121
6.写一个测试类:TestOP.java
 1package org.lxh.hibernate.demo01;
 2
 3import java.util.Iterator;
 4import java.util.List;
 5
 6public class TestPO {
 7
 8    /**
 9     * @param args
10     */

11    public static void main(String[] args) {
12        // TODO 自动生成方法存根
13        // 生成POJO类实例化对象
14        Person p = new Person() ;
15            p.setId("10001") ;
16        p.setName("古天乐") ;
17        p.setPassword("www.woailou.cn") ;
18        p.setSex("") ;
19        p.setEmail("asdffdsa@163.com") ;
20        PersonOperate po = new PersonOperate() ;
21        po.insert(p) ;
22//以上是向数据库中插入所需代码。
23         Person p = po.queryById("10001") ;
24         System.out.println(p.getName()) ;
25//以上是根据ID查询所需代码。
26         po.delete("10001") ;
27//删除ID为10001的数据
28        List l = po.queryByLike("") ;
29        Iterator iter = l.iterator() ;
30        while(iter.hasNext())
31        {
32            Person p = (Person)iter.next() ;
33            System.out.println(p.getName()) ;
34        }

35//以上是模糊查询
36    }

37
38}

39
注:本文章是自我学习。

posted on 2008-07-23 10:45 生命的绽放 阅读(318) 评论(0)  编辑  收藏 所属分类: Hibernate


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(5)

随笔分类(94)

随笔档案(93)

文章分类(5)

文章档案(5)

相册

JAVA之桥

SQL之音

兄弟之窗

常用工具下载

积分与排名

最新评论

阅读排行榜