创建hibernate架构:

注意:需要将所需的架包导进去:

二:Java工程的具体结构:

具体代码如下:hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
   <-- -->
<!--
连接数据库的四大参数:①驱动②数据库③账户④密码,注意:不能有空格
-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 控制台打印sql语句 测试 -->
<property name="show_sql">true</property>
<!--
引入映射文件,这是domain中绑定的employee.hbm.xml路径
-->
<mapping resource="demo/test/domain/employee.hbm.xml"/> </session-factory> </hibernate-configuration>

模板方法的接口:

package demo.test.dao;

import java.util.List;

import demo.test.domain.Employee;

public interface IEmployee {
public void save(Employee emp);
public void delete(Employee employ);
public void update(Employee emp);
List<Employee> list();
public Employee get(Employee emp); }

实现类:

package demo.test.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session; import demo.test.dao.IEmployee;
import demo.test.domain.Employee;
import demo.test.utiltool.UtilTool; public class ImplEmployee implements IEmployee { @SuppressWarnings("deprecation")
@Override
public void save(Employee emp) {
Session session = UtilTool.getSession();
// Configuration configuration = new
// Configuration().configure();//配置对象Configuration主要靠config加载解析配置文件
// Session session = configuration.buildSessionFactory().openSession();
session.beginTransaction();//加了事物,是出于安全性考虑.
session.save(emp);
session.getTransaction().commit();//加了事物,是出于安全性考虑. session.close();
} @Override
public void delete(Employee emp) {
Session session = UtilTool.getSession();
session.beginTransaction();
session.delete(emp);
session.getTransaction().commit();
session.close();
} @Override
public void update(Employee emp) {
Session session = UtilTool.getSession();
session.beginTransaction();
session.update(emp);
session.getTransaction().commit();
session.close();
} @Override
public List<Employee> list() {
Session session = UtilTool.getSession();
Query query = session.createQuery("SELECT emp FROM Employee emp");
@SuppressWarnings("unchecked")
List<Employee> list = query.list();
return list;
} @Override
public Employee get(Employee emp) {
Session session = UtilTool.getSession();
session.beginTransaction();
Employee emplo = (Employee) session.get(emp.getClass(), emp.getId());
session.close();
return emplo;
} }

Javabean规范:

package demo.test.domain;
//javabean规范:①必须是一个公共类②类变量都为private私有③空参构造方法④getter和setter方法
public class Employee {
private Integer id;
private String name;
private Integer age;
public Employee() {}
public Employee(String name, Integer age, Integer id) {
this.name = name;
this.age = age;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Employee(Integer id) {
this.id = id;
}
public Employee(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]";
} }

javabean规范中的类所对应的.xml文件:跟随Employee

最终要将此文件部署到hibernate.cfg.xml的mapping resource中

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="demo.test.domain">
<class name="Employee" table="t_employee"> <!-- 对象模型名 和 表名 -->
<id name="id" column="e_id">
<generator class="native" /> <!-- 根据本地设置主键 -->
</id>
<property name="name" column="e_name"/>
<property name="age" column="e_age"/>
</class>
</hibernate-mapping>

工具类:将冗余部分抽出,作为公共部分供其他方法调用

package demo.test.utiltool;

import org.hibernate.Session;
import org.hibernate.cfg.Configuration; public class UtilTool { public static Session getSession(){
//配置对象Configuration主要靠config加载解析配置文件
Session session = new Configuration().configure().buildSessionFactory().openSession();
return session;
}
}

测试类:

package demo.test.utiltest;

import org.junit.Test;

import demo.test.dao.IEmployee;
import demo.test.dao.impl.ImplEmployee;
import demo.test.domain.Employee; //测试类
public class TestClass {
IEmployee employ;
public TestClass() {
employ = new ImplEmployee();
} @Test
public void testSave() {
IEmployee employee = new ImplEmployee();
Employee employ = new Employee("sdsa", 112);
employee.save(employ);
} @Test
public void testdelete() {
IEmployee employee = new ImplEmployee();
Employee employ = new Employee(5);
employee.delete(employ);
} @Test
public void testupdate() {
IEmployee employee = new ImplEmployee();
Employee employ = new Employee("張三",12,6);
employee.update(employ);
}
@Test
public void testlist() {
System.out.println(employ.list());
}
@Test
public void testget() {
IEmployee employee = new ImplEmployee();
Employee employ = new Employee(6);
Employee empl = employee.get(employ);
System.out.println(empl); }
}

hibernate创建构架的更多相关文章

  1. hibernate 创建session

    //1. 创建一个 SessionFactory 对象 SessionFactory sessionFactory = null; //1). 创建 Configuration 对象: 对应 hibe ...

  2. hibernate 创建工厂类

    package cn.hibernate; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; / ...

  3. Hibernate创建hqll时报错

    Hibernate 问题,在执行Query session.createQuery(hql) 报错误 出错截图: 这条语句在java运行环境下,直接连数据库不出错,如果在hiberante,strut ...

  4. idea用hibernate创建一个表两个主键时遇到的问题

    1>> idea功能简单,最大化的实现傻瓜式操作,不需要像eclipse一样手敲代码,尤其是在创建主键多个或者主键映射时. 2>> (1).首先,idea创建复合主键映射时,需 ...

  5. Hibernate创建SessionFactory实例

    private static SessionFactory sessionFactory = null;  static {  Configuration configuration =new Con ...

  6. Hibernate入门之创建数据库表

    前言 Hibernate 5.1和更早版本至少需要Java 1.6和JDBC 4.0,Hibernate 5.2和更高版本至少需要Java 1.8和JDBC 4.2,从本节开始我们正式进入Hibern ...

  7. Hibernate —— 检索策略

    一.Hibernate 的检索策略本质上是为了优化 Hibernate 性能. 二.Hibernate 检索策略包括类级别的检索策略.和关联级别的检索策略(<set> 元素) 三.类级别的 ...

  8. Hibernate入门与简谈

    Hibernate jdbc Java Databases Connectivity, 他是提供了一组Java API来访问关系数据库的Java程序.这些Java API 可以使Java应用程序执行S ...

  9. Hibernate 开发流程

    Hibernate内部分装的技术:JDBC(Java Data Base Connectivity), JTA(Java Transaction API) , JNDI(Java Naming and ...

随机推荐

  1. 虚拟机ubuntu的常用命令集合

    一.文件/文件管理 ls 列出当前目录文件(不包括隐含文件) ls -a 列出当前目录文件(包括隐含文件) ls -l 列出当前目录下文件的详细信息 cd .. 回当前目录的上一级目录 cd -回上一 ...

  2. MYSQL常用函数(格式化函数)

    DATE_FORMAT(date,fmt)  依照字符串fmt格式化日期date值 FORMAT(x,y)   把x格式化为以逗号隔开的数字序列,y是结果的小数位数 INET_ATON(ip)   返 ...

  3. shell和shell脚本基本知识

    详情可见: https://www.cnblogs.com/yinheyi/p/6648242.html 这张图,可以帮助我们理解这个词语! 最底下是计算机硬件,然后硬件被系统核心包住,在系统核心外层 ...

  4. python爬虫学习(三):使用re库爬取"淘宝商品",并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字“python”,然后搜索,显示如下搜索结果 从url连接中可以得到搜索商品的关键字是 ...

  5. canvas学习之饼状图

    接着上一节说,这次我使用canvas绘制了饼状图,主要是SectorGraph.js, 引入 import {canvasPoint} from '../../assets/js/canvas';im ...

  6. 三种css样式表及其优先级

    1.行内样式 body内: <p style="text-indent: 2em;color: red"> 我是行内样式 </p> 2.内部样式表 body ...

  7. php中安装memcache

    1.查看php的版本(我的是5.6) 2.打开phpinfo查看第四行 3.然后选择要安装的文件 4.复制到 ext中 复制后 5.打开配置文件php.ini 把 extension=php_memc ...

  8. MySQL使用的常见问题

    (一)是否启动了服务器 如果没有启动报错:ERROR 2003 (HY000): Can't connect to MySQL server on ‘localhost' (10061) 解决方法:启 ...

  9. 【Oracle】【1】查询N分钟之前的数据

    --查询距离现在N分钟前的数据 1440:表示一天有1440分钟 SYSDATE - 10 :表示10天前 参考博客: 1,oracle 查询十分钟之前的数据 - 胡金水的博客 - CSDN博客 ht ...

  10. MongoDB\BSON\UTCDateTime::toDateTime

    示例# 1 MongoDB \ BSON \ UTCDatetime:toDateTime()例子 <?php $utcdatetime = new MongoDB\BSON\UTCDateTi ...