hibernate 学习
hibernate.cg.xml
可以通过myeclipse自动生成,添加数据库信息;
<?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>
<property name="dialect">
org.hibernate.dialect.MySQLDialect</property> <!-- 数据库方言 -->
<property name="connection.url">
jdbc:mysql://localhost:3306/db_examsystem</property><!-- 数据库连接URL -->
<property name="connection.username">***</property> <!-- 数据库用户名 -->
<property name="connection.password">***</property> <!-- 数据库用户密码 -->
<property name="connection.driver_class"> <!-- 数据库驱动类 -->
com.mysql.jdbc.Driver</property>
<mapping resource="com/sanqing/po/Student.hbm.xml"/>
<mapping resource="com/sanqing/po/Teacher.hbm.xml"/>
<mapping resource="com/sanqing/po/Subject.hbm.xml"/>
</session-factory>
</hibernate-configuration>
HibernateSessionFactory.java 也可以通过myeclipde自动生成,主要为设置和获得配置文件信息、获得Session和建立SessionFactory的方法类封装
DAO方法
举例 SubjectDAO.java同servlet
SubjectDAOImpl.java 存取数据库差别,只是以Hibernate(觉得是把JDBC封装,以对象方式存取数据)
public void addSubject(Subject subject) {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.save(subject);
transaction.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
transaction.rollback();
}
HibernateSessionFactory.closeSession();
}
public Subject findSubjectByTitle(String title) {
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("from Subject as sub where sub.subjectTitle=?");
query.setString(0, title);
List list = query.list();
HibernateSessionFactory.closeSession();
if(list.size() == 0) {
return null;
} else {
return (Subject)list.get(0);
}
}
public List<Subject> findSubjectByPage(Page page) {
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("from subject");
query.setMaxResults(page.getEveryPage());
query.setFirstResult(page.getBeginIndex());
List list = query.list();
HibernateSessionFactory.closeSession();
return list; }
public int findSubjectCount() {
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("from subject");
List list = query.list();
int count = list.size();
HibernateSessionFactory.closeSession();
return count;
}
public Subject findSubjectByID(int subjectID) {
Session session = HibernateSessionFactory.getSession();
Subject subject = (Subject) session.get(Subject.class, subjectID);
HibernateSessionFactory.closeSession();
return subject; }
public void uppdateSubject(Subject subject) {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.update(subject);
transaction.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
transaction.rollback();
}
HibernateSessionFactory.closeSession();
}
public void deleteSubject(int subjectID) {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = null;
Subject subject = (Subject) session.get(Subject.class, subjectID);
try {
transaction = session.beginTransaction();
session.delete(subject);
transaction.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
transaction.rollback();
}
}
action不能直接调用dao,而要通过一个业务逻辑层
example :SubjectServiceImpl.java
<?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> <property name="dialect"> org.hibernate.dialect.MySQLDialect</property><!-- 数据库方言 --> <property name="connection.url"> jdbc:mysql://localhost:3306/db_examsystem</property><!-- 数据库连接URL --> <property name="connection.username">root</property><!-- 数据库用户名 --> <property name="connection.password">123456</property><!-- 数据库用户密码 --> <property name="connection.driver_class"><!-- 数据库驱动类 --> com.mysql.jdbc.Driver</property> <mapping resource="com/sanqing/po/Student.hbm.xml"/> <mapping resource="com/sanqing/po/Teacher.hbm.xml"/> <mapping resource="com/sanqing/po/Subject.hbm.xml"/> </session-factory></hibernate-configuration>
hibernate 学习的更多相关文章
- Hibernate学习之——搭建log4j日志环境
昨天讲了Hibernate开发环境的搭建以及实现一个Hibernate的基础示例,但是你会发现运行输出只有sql语句,很多输出信息都看不见.这是因为用到的是slf4j-nop-1.6.1.jar的实现 ...
- Hibernate学习笔记(二)
2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...
- Hibernate学习笔记(一)
2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...
- Hibernate 学习笔记一
Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...
- Hibernate学习笔记-Hibernate HQL查询
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...
- 我的hibernate学习记录(二)
通过上一篇文章我的hibernate学习记录(一)基本上的入门了hibernate,但是,里面还有还多东西是通过迷迷糊糊的记忆,或者说copy直接弄进去的,所以这篇文章就需要对上篇的一些文件.对象进行 ...
- Hibernate学习(二)关系映射----基于外键的单向一对一
事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似.只需要将原来的many-to-one元素增加unique="true"属性, ...
- Hibernate学习一:Hibernate注解CascadeType
http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hi ...
- Hibernate学习---缓存机制
前言:这些天学习效率比较慢,可能是手头的事情比较多,所以学习进度比较慢. 在之前的Hibernate学习中,我们无论是CURD,对单表查询还是检索优化,我们好像都离不开session,session我 ...
- hibernate学习系列-----(2)hibernate核心接口和工作机制
在上一篇文章hibernate学习系列-----(1)开发环境搭建中,大致总结了hibernate的开发环境的搭建步骤,今天,我们继续了解有关hibernate的知识,先说说这篇文章的主要内容吧: C ...
随机推荐
- nginx之location简单匹配总结
location匹配规则与优先级 = 精确匹配,匹配成功则停止匹配 ^~ 前缀普通字符匹配,匹配成功则停止匹配 ~ 正则匹配,区分大小写:多个正则按顺序匹配 ~* 正则匹配,不区分大小写:多个 ...
- ctypes to load library in c/c++
cdll.LoadLibrary(...) restype (default is c_int) argtypes (what's the default? c_int?) customized da ...
- Ubuntu 18.10 使用VMware克隆后,克隆后的机器再手动更改interfaces配置文件后无法启动网络的解决办法
克隆过程就略过了 配置interfaces root@client02:~# vim /etc/network/interfaces # interfaces() ) and ifdown() aut ...
- linux 简单的mysql备份和导入,以及文件的备份和导入
一,数据库的备份与导入 1),数据库的备份 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 例:mysqldump -u dbadmin -p myblo ...
- Django的ORM基础增删改查
查询 all() 返回模型类对应表格中所有数据,返回查询集 get() 返回表格中满足条件的一条且只能有一条数据 如果查到多条数据,则抛异常:MultipleObjectsReturned 查询不到数 ...
- Spring Boot运行原理
概述 本文主要写了下Spring Boot运行原理,还有一个小例子. Spring4.x提供了基于条件来配置Bean的能力,而Spring Boot的实现也是基于这一原理的. Spring Boot关 ...
- JSP文件上传,好烦啊、、
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- javascript 流程控制及函数
回顾 基本语法 在html的使用 <script></script> 注释 ///* */ 指令结束符 ;换行 输出 console.log()document.write() ...
- [BZOJ2434][Noi2011]阿狸的打字机 AC自动机+树状数组+离线
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2434 题目中这种多个串匹配的问题,一下子就想到了AC自动机.然后发现如果要建立AC自动机, ...
- PL/SQL学习笔记(二)
select * from protype;select * from product;---笛卡尔连接查询(交叉连接)select * from protype,product;select * f ...