ORMapping:对象关系映射
优点 缺点
SQL/JDBC 成熟流行使用DAO模式 代码烦杂,可读性差,维护移植困难
Entity Bean CMP ,未来的EJB3 错误的设计,不可移植序列化,不支持多态的关联查询
JDO 简单透明标准 不够成熟
Apache OJB 性能稳定 文档少
iBATIS 可以控制更多数据库细节 持久层封装不彻底
Hibernate 成熟流行功能强大 不够透明
Hibernate 是流行成熟的O/R Mapping 框架。提供了强大的对象和关系数据库映射以及查询功能。
开发步骤:
开发持久化类设计。
持久化类和关系数据库的映射。
应用的开发。
POJO类:只包含setter 及 getter 方法的类
HBM映射: 描述类和表之间关系
主键生成方式:
assigned :指派 由用户自行管理
设计一个Person类,定义了id uid name password ,并生成getter和setter方法
那么建立person表和Person类的关系映射就是如下
<?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>
<!-- HBM根元素 所在的包 --> <!--指定Person类 与person的映射 -->
<class name="zzj.zzj.Person" table="person" catalog="person">
<!-- name表示Person类中的属性名字 -->
<!-- column表示表中字段名字 -->
<!-- 这样就把 类中的 id和表中的id映射上 -->
<!-- type 表示类型 -->
<!-- assigned 主键的生成方式,这里表示由用户自行管理 -->
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="assigned"></generator>
</id>
<!-- property表示 类中和表中其他字段的映射 -->
<!-- name表示 Person类中的属性名称 -->
<!-- column 表中 的字段名称 -->
<!-- type 类型 -->
<!-- 如果表中有非空约束,那么就有not-null -->
<property name="uid" type="java.lang.String">
<column name="uid" length="32" />
</property>
<property name="name" type="java.lang.String">
<column name="name" length="32" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" />
</property>
</class>
</hibernate-mapping>
$------------------创建数据库操作类persond.java----------------------------------$
package zzj.zzj;
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的类
* @author Administrator
*增加 删除 修改 按ID查询 模糊查询 查询全部
*/
public class persond {
//Hibernate中,所有的操作都是通过Session完成,但和jsp中的 session 不同
private Session session = null;
//在构造方法之中实例化Session对象
public persond()
{
//找到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();
}
//向数据库插入操作
public void update(Person p)
{
//开始事务
Transaction tran = this.session.beginTransaction();
//执行语句
this.session.update(p);
//提交事务
tran.commit();
}
//按ID查询,推荐使用HQL--官方推荐的Hibernate查询语言
public Person queryById(int id)
{
Person p= null;
//使用Hibernate查询语句
String hql = "FROM Person as p WHERE p.id=?";
//通过Query 接口查询
Query q = this.session.createQuery(hql);
q.setInteger(0,id);
List l = q.list();
Iterator iter = l.iterator();
if(iter.hasNext())
{
p = (Person)iter.next();
}
return p;
}
//使用此方法删除数据之前必须查找到数据对象,性能低
//删除数据
public void delete(Person p)
{
//开始事务
Transaction tran = this.session.beginTransaction();
//执行语句
this.session.delete(p);
//提交事务
tran.commit();
}
//HQL中增加了删除指令
public void delete (int id)
{
//开始事务
Transaction tran = this.session.beginTransaction();
String hql = "DELETE Person WHERE id=?";
Query q = this.session.createQuery(hql);
//设置参数
q.setInteger(0, id);
q.executeUpdate();
//提交事务
tran.commit();
}
//查询所有数据
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;
}
}
$------创建数据库使用主程序 pess.java------$
package zzj.zzj;
import java.util.Iterator;
import java.util.List;
public class pess {
/**
* @param args
*/
public static void mohuchaxun()
{
persond po = new persond();
List l = po.queryBylike("zzj");
Iterator iter = l.iterator();
while(iter.hasNext())
{
Person p = (Person)iter.next();
System.out.println(p.getName());
}
}
public static void chaxun1()
{
persond po = new persond();
List l = po.queryAll();
Iterator iter = l.iterator();
while(iter.hasNext())
{
Person p = (Person)iter.next();
System.out.println(p.getName());
}
}
public static void shanchu1()
{
persond po = new persond();
po.delete(1);
}
public static void shanchu()
{
persond po = new persond();
Person p = po.queryById(11);
System.out.println(p.getName());
po.delete(p);
}
public static void chaxun()
{
persond po = new persond();
Person p = po.queryById(11);
System.out.println(p.getName());
}
public static void zengjia()
{
//生成pojo类对象
Person p = new Person();
p.setId(11);
p.setName("zzjzzj我是无敌的");
p.setPassword("我无敌无敌");
p.setUid("周jz周");
//实例化 persond对象
persond pd = new persond();
pd.insert(p);
//在插入完成后,必须将事物提交
}
public static void charu()
{ //生成pojo类对象
Person p = new Person();
p.setId(11);
p.setName("zzjzzj我是无敌的");
p.setPassword("我无敌无敌");
p.setUid("周jz周");
//实例化 persond对象
persond pd = new persond();
pd.update(p);
//在插入完成后,必须将事物提交
}
public static void main(String[] args) {
/*
charu();//插入
zengjia();//增加
*/
//chaxun();//查询
//shanchu();//删除
// shanchu1();//用HQL直接删除
//chaxun1();//查询所有
mohuchaxun();//模糊查询
}
}
$----------------------创建pojo类 Person.java------------------------------------$
package zzj.zzj;
//pojo类
public class Person {
private Integer id;
private String uid;
private String name;
private String password;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
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 Integer getId() {
return id;
}
public void setId(Integer id) {
this.id
没有合适的资源?快使用搜索试试~ 我知道了~
j2ee笔记--很有用的东西
共38个文件
txt:38个
需积分: 0 2 下载量 189 浏览量
2009-04-21
20:02:35
上传
评论
收藏 47KB RAR 举报
温馨提示
j2ee笔记--当你面试JAVA程序员的时候也许用得上。。。
资源推荐
资源详情
资源评论
收起资源包目录
j2ee笔记.rar (38个子文件)
j2ee笔记
ssh项目实战
第四课数据库
jdbc详解
jdbc详解.txt 3KB
jdbc表单操作数据库.txt 3KB
定时1.txt 2KB
定时2.txt 763B
jdbc2.0简介.txt 3KB
事件调度器.txt 4KB
DAO设计模式
DAO设计模式.txt 1KB
第五课servlet
servlet.txt 396B
第三课javabean
四种取得属性的方法.txt 2KB
javabean详解.txt 3KB
第七课Struts
HTML标签
HTML标签.txt 3KB
LOGIC标签
LOGIC标签.txt 4KB
BEAN标签
BEAN标签.txt 4KB
第六课mvc设计
mvc设计.txt 583B
第九课Spring
第二课jsp进阶
内置对象
内置对象.txt 1KB
request对象
request对象4.txt 1KB
request对象3.txt 698B
request对象1.txt 674B
request对象2.txt 998B
session对象
session对象.txt 2KB
Application与Config对象
Application与Config对象.txt 583B
response对象
response对象.txt 3KB
第八课Hibernate
第八课hibernate3
1对多数据关联技术.txt 6KB
1对1数据关联技术.txt 6KB
多对多数据关联技术.txt 8KB
第八课Hibernate1
Criteria接口使用.txt 5KB
Hibernate基础.txt 8KB
HQL 查询语言的使用.txt 4KB
第八课 Hibernate2
Map容器映射技术.txt 3KB
Set容器映射技术.txt 5KB
List容器映射技术.txt 3KB
第一课jsp基础
HTML与服务器交互
HTML与服务器交互.txt 787B
表达式输出
表达式输出.txt 718B
全局和局部变量
全局局部变量.txt 280B
文件包含
文件包含.txt 1KB
注释问题
注释分类和用法.txt 213B
中文输出问题
中文问题.txt 352B
跳转语句
跳转语句.txt 407B
共 38 条
- 1
资源评论
huangkeke2006
- 粉丝: 2
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功