Hibernate入门程序

本来是做了个文档的有图,那样更加细化了,每个步骤都上了图.第一次写这样的Hibernate程序极易出错. 没办法这里上传不了,如果大家需要请加QQ9956164。我及时发送给你,希望对你学习Hibernate有帮助.

通过对hibernate的学习发现,实践出真知。很多书上都是用文字来描写的,导致很多人配置hibernate老是出错(我也是其中之一)。所以决定写份图文并茂的笔记方便大家对hibernate的学习。这是个经典实例哦。

案例实现,完成最基本的用户添加、删除、查找、查询单个、查询全部 ;
通过MyEclipse6.5进行开发
步骤一:创建web Project
步骤二:将hibernate jar包导入到开发包中
步骤三:
选择导入相应的jar包,选择下一步
步骤四:
这个步骤是创建全局的hibernate文件(要多操作,不同的数据与POJO映射需要不同的想象,极易出错,个人认为起码要精通)
步骤五:
不选择创建默认工厂,点击完成。
步骤七:配置数据库的连接方式。
步骤八:核心配置文件终于来啦。
步骤九:找出MyEclipse中自带的数据库浏览器
步骤十:创建数据库操作文件,方便后续操作
创建数据库的代码如下所示:我用的是Mysql5.0
drop database person ;
 
create database person ;
 
use person ;
 
drop table person ;
 
create table person
(
    id varchar (32) primary key not null ,
    name varchar (20) not null ,
    password varchar (20) not null
) ;
 
insert into person values ( '001' , 'Ricky' , 'admin' ) ;
insert into person (id, name , password ) values ( '2' , 'Chris' , 'adminliwei' ) ;
 
commit ;
 
select * from person ;
 
再次检查配置是否正确。
执行一遍所写的数据库脚本代码。
步骤十一:
环境基本搭建完毕 接下来创建POJO
1、 构建Person类,它的属性必须与数据库的字段一致方便做好后面的映射。
包含三个基本用户信息:
package org.lw.hibernate.demo1;
 
public class Person {
    private String name ;
    private String password ;
    private String 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 getId() {
       return id ;
    }
 
    public void setId(String id) {
       this . id = id;
    }
}
 
2、 配置持久层与POJO(也就是表与Person类的映射)的映射
3、映射Person类的选项,暂时按我的选吧。下一步
4、主键自动指派,直接下一步。
5、设置映射属性
6、完成映射。
完成后生成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" >
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
< hibernate-mapping >
    < class name = "org.lw.hibernate.demo1.Person" table = "person" catalog = "person" >
        < id name = "id" type = "string" >
            < column name = "id" length = "32" />
            < generator class = "assigned" ></ generator >
        </ id >
        < property name = "name" type = "string" >
            < column name = "name" length = "20" not-null = "true" />
        </ property >
        < property name = "password" type = "string" >
            < column name = "password" length = "20" not-null = "true" />
        </ property >
    </ class >
</ hibernate-mapping >
 
之后进入hibernate全局配置文件中,通过界面添加person配置文件
数据映射完成 接下来编写PersonOperate类
package org.lw.hibernate.demo1;
 
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 对象
// 这个构造初始化是一般步骤 重配置文件中取出 session 在开发中最好定义个类或放 // 进配置文件里 .
    // 只要用到 hibernate 都会用到它,建议初学着看看他的 API
    public PersonOperate() {
       // 找到 Hibernate 配置
       Configuration config = new Configuration().configure();
       // 从配置中取出 SessionFactory
       SessionFactory factory = config.buildSessionFactory();
       // Session 工厂中取出 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){
       this . session .update(p) ;
       this . session .beginTransaction().commit() ;
    }
    // 是用 HQL 语言删除、操作差不多的就不再注释了,建议查询 hibernate 官方 API
    public void delete(String id){
       //HQL 语法
       String hql = "delete Person where id=? " ;
       // 使用 Query 接口
       Query q = this . session .createQuery(hql) ;
       // 第一个预编译参数的下标从 0 开始
       q.setString(0, id) ;
       // 执行语句
       q.executeUpdate() ;
       // 提交事务
       this . session .beginTransaction().commit() ;
    }
    public Person queryById(String id){
       Person per = null ;
       String hql = "from Person as p where p.id=?" ;
       Query q = this . session .createQuery(hql) ;
       q.setString(0, id) ;
       List l = q.list() ;
       Iterator iter = l.iterator() ;
       if (iter.hasNext()){
           per = (Person)iter.next();
       }
       return per ;
    }
    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 ;
    }
    public List queryAll(){
       List l = null ;
       String hql = "from Person" ;
       Query q = this . session .createQuery(hql) ;
       l = q.list() ;
       return l ;
    }
 
 
最后编写测试类
package org.lw.hibernate.demo1;
 
import java.util.Iterator;
import java.util.List;
 
public class POTest {
 
       public static void main(String[] args) {
              Person p = new Person() ;
              p.setId("3") ;
              p.setName("李维") ;
              p.setPassword("admin") ;
              PersonOperation po = new PersonOperation() ;
//             添加
//             po.insert(p) ;
//           修改
              po.update(p) ;
//             po.delete("1") ;
//             查询单个
//             p = po.queryById("1") ;
//             System.out.println(p.getName());
              //查询所有
//             List l = po.queryAll() ;
//             Iterator iter = l.iterator() ;
//             while(iter.hasNext()){
//                    p = (Person)iter.next();
//                    System.out.println(p.getName()) ;
//             }
              //模糊查询
//             List l = po.queryByLike("r") ;
//             Iterator iter = l.iterator() ;
//             while(iter.hasNext()){
//                    p = (Person)iter.next();
//                    System.out.println(p.getName()) ;
//             }
       }
}
 
运行测试文件
如果出现一下结果,恭喜你,你的第一个hibernate实例运行成功
最后在MyEclipse中查询刚刚插入的结果
 
终于完成了不容易啊,希望能够帮到对hibernate充满好奇的你进入hibernate,中间省略了许多注释。
希望与大家多多交流,可能还有不少的错误欢迎大家批评指证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值