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
祥云68
- 粉丝: 14
- 资源: 4
最新资源
- 机械设计螺母自动组装成方管并焊接机sw18全套设计资料100%好用.zip.zip
- 机械设计零件防错视觉检测机(sw18可编辑+工程图+BOM)全套设计资料100%好用.zip.zip
- 机械设计流水线机器人装盘机sw21全套设计资料100%好用.zip.zip
- 机械设计磨床输送机 磨削输送机sw21全套设计资料100%好用.zip.zip
- 机械设计螺丝装袋塑封机2018可编辑全套设计资料100%好用.zip.zip
- 机械设计铝条点胶贴合机sw21全套设计资料100%好用.zip.zip
- 机械设计内径公差测定器sw16可编辑全套设计资料100%好用.zip.zip
- 机械设计木勺的设备sw18全套设计资料100%好用.zip.zip
- 机械设计偏光镜贴合机sw21全套设计资料100%好用.zip.zip
- 机械设计乒乓球上打孔插入塞子机sw21全套设计资料100%好用.zip.zip
- 机械设计平板电脑自动贴双面胶带机sw14可编辑全套设计资料100%好用.zip.zip
- 联想M7450F打印机官方驱动安装程序
- 电热锅炉供暖系统的仿人智能控制器的设计与研究
- 基于ARM9的无线数据采集系统研究与设计
- 二相混合式步进电机细分控制技术研究及驱动器的设计
- 基于FPGA的多通道多速率信号传输研究与设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈