配置hibernate手动配置

本文详细介绍了如何使用Hibernate框架进行数据库操作,包括手动配置过程、POJO类介绍、ORM映射文件配置及Hibernate核心配置文件等内容,并提供了具体的代码示例。

手动配置:

1.CROD 操作

界面

testmain.java

Domain

service

数据持久层

数据库

Mysql

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();

//修改用户 对象  获取我们要修改的用户  修改

//使用对象数据库对象与类的反射

//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();

}

}

转载于:https://my.oschina.net/sunzy/blog/66111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值