手动配置:java
1.CROD 操做程序员
界面sql |
testmain.java数据库 |
Domainsession service架构 |
|
数据持久层oracle |
|
数据库app |
Mysqldom Oreacle函数 Sqlserver
|
````
2.引用hibernate jar包
3.POJO介绍
使用hibernate 时 要求数据库的某张表相互对应的那个java 类叫作pojo类 plain ordinary java objects 实际 就是普通的javaBeans 使用.
特色:
有一个主键属性 , 用于惟一标识该对象
有其余的属性
有对个个属操做的getset 方法
属性通常的private 修饰
必定要有一个无产的构造函数 (用于hibernate 架构的反射做用)
对象关系映射文件 做用 与 domain 对象和类的映射关系
文件名的 规范
Domian对象 bomm .xml 通常会放在domain 对象统一文件夹下(同包下)
手动用户配置 domain 对象和表的映射关系
<?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">
<!-- package : 表示该类在哪一个包下 -->
<hibernate-mapping package="com.sun.domain">
<!-- name : 表示类名 table 表示 该类和哪一个表映射 -->
<class name="Employee" table="EMPLOYEE">
<!-- id元素专门用于指定主键是如何生成,hibernate设计者认为,咱们每个表都应该有一个主键 -->
<!-- name:表示类的哪一个属性是主键 -->
<id name="id" type="java.lang.Integer">
<!-- 指定主键生成策略 -->
<generator class="sequence">
<param name="sequence">emp_seq</param>
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" not-null="true"/>
</property>
<property name="email" type="java.lang.String">
<column name="email" not-null="true"/>
</property>
<property name="hiredate" type="java.util.Date">
<column name="hiredate" not-null="true"/>
</property>
</class>
</hibernate-mapping>
手动配置 咱们 的 hibernate.cfg.xml文件 该文件用于配置,链接数据库的类型, driver 用户名 ,密码 , url ***** 文件名称 ,程序员通常不进行修改该文件。
手动配置 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">
<hibernate-configuration>
<session-factory>
<!-- -hibernate 设计者提供经常使用设置-->
<!-- -配置使用driver -->
<property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver</property>
<!-- -配置用户名 -->
<property name="connection.username">system</property>
<!-- -配置密码 -->
<property name="connection.password">123</property>
<!-- -地址 -->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1 :1521:SUNDB</property>
<!-- -p配置dialect方言使其 识别链接方式 -->
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<mapping resource="com/sun/domain/Emloyee.hbm.xml"/>
</session-factory>
hibernate-configuration>
建立一个序列,未来用于主键的自增加 :
--建立一个序列
create sequence emp_seq
start with 1
increment by 1
minvalue 1
nomaxvalue
nocycle
nocache
View 方法呈现
package com.sun.view;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.sun.domain.Employee;
public class MainTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//建立configuration链接hibernate 该对象读取 完成初始化
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
///建立SessionFactory 这是一个会化工厂 是重量级的对象 保证该对象存在一次
//很是重要
SessionFactory sessionFactory = configuration.buildSessionFactory();
//建立Session 与数据库进行对话 和jdbc 的链接
Session session = sessionFactory.openSession();
///对hibernate 而言 要去对数据库 增长 , 删除 ,修改 的时候使用事务提交
//添加一名雇员
Transaction transaction = session.beginTransaction();
Employee myEmployee = new Employee();
myEmployee.setName("素贞");
myEmployee.setEmail("shuzhen@163.com");
myEmployee.setHiredate(new Date());
///实现保存
session.save(myEmployee); ///实现hibernate 封装
///完成关闭操做
///事务提交文件数据库
transaction.commit();
session.close();
}
}
对数据的 增长 修改 删除
要求数据持久层 的 类中 进行序列化
使用hibernate 开发型模数据 要使用一个 sessionFactory,提升数据减小内存的
简单定义 一个数据库 对应一个SessionFactory接口 使用一个工具包编写
SessionFactory 会话工厂
案例
建立一个工具类编写 SessionFactory会话工厂
package com.sun.Util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
///使用hibernate 开发型模数据 要使用一个 sessionFactory,提升数据减小内存的使用
//简单定义 一个数据库 对应一个SessionFactory接口
final public class MySessionFactory {
private static SessionFactory sessionFactory = null
//构造函数
private MySessionFactory() {
}
///建立一次单例 只能被调用一次
static {
sessionFactory=new Configuration().configure().buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
主类
package com.sun.view;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.sun.Util.MySessionFactory;
import com.sun.domain.Employee;
public class MainTest {
/**
* @param args
*/
public static void main(String[] args) {
///添加对象数据
AddEmployee();
//修改对象数据
c updateEmployee();
//删对象数据
DeleteEmployee();
}
public static void DeleteEmployee() {
///h获取一个session
Session session = MySessionFactory.getSessionFactory().openSession();
//删除获取对象 获取该对象 , 而后删除
//建立事务调用Session 中的beginTransaction()函数开始事务 勿忘 要有结束事务 即提交事务
Transaction ts = session.beginTransaction();
///实现 强转
Employee employee = (Employee) session.load(Employee.class,3);
session.delete(employee);
ts.commit();
session.close();
}
//修改对象数据
public static void updateEmployee() {
//修改对象
//建立configuration 对象
//建立会话工厂 SessionFactory 重量级 对象
//只能建立一次 咱们能够封装起来 写成一个最终了类 是单态
Session session = MySessionFactory.getSessionFactory().openSession();
//修改用户 对象 获取咱们要修改的用户 2 修改
//使用对象数据库对象与类的反射
//load 函数 经过主键属性 ,进而获取该对象 表的记录对应
///必定要进行强钻对象
Transaction ts = session.beginTransaction();
Employee emp =(Employee) session.load(Employee.class,6);
emp.setName("宫保鸡丁"); ///实现对数据库修改对象 update
ts.commit();
session.close();
}
/// 添加对象数据
public static void AddEmployee() {
// TODO Auto-generated method stub
//建立configuration链接hibernate 该对象读取 完成初始化
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
///建立SessionFactory 这是一个会化工厂 是重量级的对象 保证该对象存在一次
//很是重要
SessionFactory sessionFactory = configuration.buildSessionFactory();
//建立Session 与数据库进行对话 和jdbc 的链接
Session session = sessionFactory.openSession();
///对hibernate 而言 要去对数据库 增长 , 删除 ,修改 的时候使用事务提交
//添加一名雇员
Transaction transaction = session.beginTransaction();
Employee myEmployee = new Employee();
myEmployee.setName("素贞");
myEmployee.setEmail("shuzhen@163.com");
myEmployee.setHiredate(new Date());
///实现保存
session.save(myEmployee); ///实现hibernate 封装
///完成关闭操做
///事务提交文件数据库
transaction.commit();
session.close();
}
}