hibernate框架搭建,关于Hibernate框架的简介
hibernate框架搭建,关于Hibernate框架的简介详细介绍
本文目录一览: 浅谈Hibernate框架简述
在基于MVC设计模式的JAVA WEB应用中 Hibernate可以作为模型层/数据访问层 它通过配置文件(hibernate properties或hibernate cfg xml)和映射文件(*** hbm xml)把JAVA对象或PO(Persistent Object 持久化对象)映射到数据库中的数据库 然后通过操作PO 对数据表中的数据进行增 删 改 查等操作
除配置文件 映射文件和持久化类外 Hibernate的核心组件包括以下几部分
a)Configuration类 用来读取Hibernate配置文件 并生成SessionFactory对象
b)SessionFactory接口 产生Session实例工厂
c)Session接口 用来操作PO 它有get() load() save() update()和delete()等方法用来对PO进行加载 保存 更新及删除等操作 它是Hibernate的核心接口
d)Query接口 用来对PO进行查询操 它可以从Session的createQuery()方法生成
e)Transaction接口 用来管理Hibernate事务 它主要方法有mit()和rollback() 可以从Session的beginTrancation()方法生成
Persistent Object
持久化对象可以是普通的Javabeans 惟一特殊的是它们与(仅一个)Session相关联 JavaBeans在Hibernate中存在三种状态
临时状态(transient):当一个JavaBean对象在内存中孤立存在 不与数据库中的数据有任何关联关系时 那么这个JavaBeans对象就称为临时对象(Transient Object)
持久化状态(persistent):当一个JavaBean对象与一个Session相关联时 就变成持久化对象(Persistent Object)
脱管状态(detached):在这个Session被关闭的同时 这个对象也会脱离持久化状态 就变成脱管状态(Detached Object) 可以被应用程序的任何层自由使用 例如可以做与表示层打交道的数据舆对象(Data Transfer Object)
Hibernate的运行过程
Hibernate的运行过程如下
A:应用程序先调用Configration类 该类读取Hibernate的配置文件及映射文件中的信息 并用这些信息生成一个SessionFactpry对象
B:然后从SessionFactory对象生成一个Session对象 并用Session对象生成Transaction对象;可通过Session对象的get() load() save() update() delete()和saveOrUpdate()等方法对PO进行加载 保存 更新 删除等操作;在查询的情况下 可通过Session对象生成一个Query对象 然后利用Query对象执行查询操作;如果没有异常 Transaction对象将提交这些操作结果到数据库中
Hibernate简单示例
数据
create table T_register
(
id int primary key
userName varchar( )
userPwd varchar( )
sex varchar( )
age int
)
视图层 注册页面register jsp
用户名
密 码
性 别
年 龄
设计持久化类TRegister java
package hibernate PO;
/**
* 持久化类
*/
public class TRegister implements java io Serializable {
// Fields
private Integer id;
private String userName;
private String userPwd;
private String sex;
private Integer age;
// Constructors
/** default constructor */
public TRegister() {
}
/** minimal constructor */
public TRegister(Integer id) {
this id = id;
}
/** full constructor */
public TRegister(Integer id String userName String userPwd String sex Integer age) {
this id = id;
this userName = userName;
this userPwd = userPwd;
this sex = sex;
this age = age;
}
// Property accessors
public Integer getId() {
return this id;
}
public void setId(Integer id) {
this id = id;
}
public String getUserName() {
return this userName;
}
public void setUserName(String userName) {
this userName = userName;
}
public String getUserPwd() {
return this userPwd;
}
public void setUserPwd(String userPwd) {
this userPwd = userPwd;
}
public String getSex() {
return this sex;
}
public void setSex(String sex) {
this sex = sex;
}
public Integer getAge() {
return this age;
}
public void setAge(Integer age) {
this age = age;
}
}
设计Hibernate配置文件hibernate cfg xml
//Hibernate/Hibernate Configuration DTD //EN
configuration dtd >
root
jdbc:mysql://localhost: /study
hibernate dialect MySQLDialect
MySQL
root
gjt mm mysql Driver
true
设计映射文件TRegister hbm xml
mapping dtd >
设计hibernate基础类HibernateUtil java
package hibernate;
/**
* hibernate 基础类
* @author fengyan
* date :
*/
import hibernate HibernateException;
import hibernate Session;
import hibernate SessionFactory;
import hibernate cfg Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static
{
try
{
Configuration config = new Configuration(nfigure( /hibernate/hibernate cfg xml );
sessionFactory = config buildSessionFactory();
}
catch(Throwable e)
{
throw new ExceptionInInitializerError(e);
}
}
public static final ThreadLocal session = new ThreadLocal();
public static Session currentSession() throws HibernateException
{
Session s = (Session)session get();
//Open a new Session if this Thread has none yet
if(s == null || !s isOpen())
{
s = sessionFactory openSession();
session set(s);
}
return s;
}
public static void closeSession() throws HibernateException
{
Session s = (Session)session get();
session set(null);
if(s != null)
s close();
}
}
设计控制类
package hibernate servlet;
/**
* @author fengyan
* date :
* 设计Hibernate控制类
*/
import hibernate HibernateUtil;
import hibernate PO TRegister;
import java io IOException;
import java io PrintWriter;
import javax servlet ServletException;
import javax servlet HttpServlet;
import javax servlet HttpServletRequest;
import javax servlet HttpServletResponse;
import hibernate HibernateException;
import hibernate Session;
import hibernate Transaction;
public class RegisterServlet extends HttpServlet {
private static final String CONTENT_TYPE = text/;charset=GBK ;
public void init() throws ServletException {
// Put your code here
}
public void destroy() {
super destroy(); // Just puts destroy string in log
// Put your code here
}
public void doGet(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException {
response setContentType(CONTENT_TYPE);
request setCharacterEncoding( GBK );
PrintWriter out = response getWriter();
String userName = request getParameter( userName );
String userPwd = request getParameter( userPwd );
String sex = request getParameter( sex );
int age = Integer parseInt(request getParameter( age ));
TRegister rg = new TRegister();
rg setAge(age);
rg setSex(sex);
rg setUserName(userName);
rg setUserPwd(userPwd);
Session session = HibernateUtil currentSession();//生成Session实例
Transaction tx = session beginTransaction();
try
{
session save(rg); //保存持久类对象
mit(); //提交到数据库
session close();
response sendRedirect( registerOK jsp );
}
catch(HibernateException e)
{
e printStackTrace();
tx rollback();
}
}
public void doPost(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException {
doGet(request response);
}
lishixinzhi/Article/program/Java/ky/201311/28144
关于Hibernate框架的简介
应用程序的分层体系结构
随着计算机应用软件的发展 应用程序逐渐由单层体系结构发展为多层体系结构 其中 三层结构是目前典型的一种应用软件结构 如图 左
表述层 提供与用户交互的界面 如GUI(图形用户界面) web页面等
业务逻辑层 负责各种业务逻辑 直接访问数据库 提供对业务数据的保存 更新 删除和查询操作
数据库层 负责存放管理应用的持久性业务数据
三层结构的特点是 所有下层向上层提供调用的接口 具体实现细节对上层透明 层与层之间存在自上而下的依赖关系 即上层会访问下层的API 但下层不依赖于上层 持久化层(如图 右)
( )什么叫持久化?
在图 右中 分离出的持久化层封装了数据访问细节 为业务逻辑层提供了面向对象的API
持久(Persistence) 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘) 持久化的主要应用是将内存中的数据存储在关系型的数据库中 当然也可以存储在磁盘文件中 XML数据文件中等等
( )什么叫持久层?
持久层(Persistence Layer) 即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面 将数据使用者和数据实体相关联
( )为什么要持久化?增加持久层的作用是什么?
数据库的读写是一个很耗费时间和资源的操作 当大量用户同时直接访问数据库的时候 效率将非常低 如果将数据持久化就不需要每次从数据库读取数据 直接在内存中对数据进行操作 这样就节约了数据库资源 而且加快了系统的反映速度
增加持久化层提高了开发的效率 使软件的体系结构更加清晰 在代码编写和系统维护方面变得更容易 特别是在大型的应用里边 会更有利 同时 持久化层作为单独的一层 人们可以为这一层独立的开发一个软件包 让其实现将各种应用数据的持久化 并为上层提供服务 从而使得各个企业里做应用开发的开发人员 不必再来做数据持久化的底层实现工作 而是可以直接调用持久化层提供的API
( )目前在持久化层领域 实现模式有以下几种
A 业务逻辑和数据访问耦合
B 主动域对象模式
C ORM模式
D JDO模式
E CMP模式
ORM介绍
ORM(Object Relational Mapping) 即对象关系映射
指以O/R原理设计的持久化框架(Framework) 包括 O/R机制 SQL自生成 事务处理和Cache管理等
ORM的实现思想就是将关系数据库中表的数据映射成为对象 以对象的形式展现 这样开发人员就可以把对数据库的操作转化为对这些对象的操作 因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作
常用的ORM中间件有
Apache OJB ()
Cayenne ()
Jaxor ()
Hibernate ()
iBatis ()
jRelationalFramework ()
mirage ()
SMYLE ()
TopLink ()
其中 Hibernate 的轻量级 ORM 模型逐步确立了在 Java ORM 架构中领导地位 甚至取代复杂而又繁琐的 EJB 模型而成为事实上的 Java ORM 工业标准 而且其中的许多设计均被 J EE 标准组织吸纳而成为最新 EJB 规范的标准
二 Hibernate定义
Hibernate是一种Java语言下的对象关系映射解决方案 它是一种自由 开源的软件 它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去 为面向对象的领域模型到传统的关系型数据库的映射 提供了一个使用方便的框架
三 Hibernate的作用
Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射) 还提供数据查询和获取数据的方法 可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间
它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来 无论是从设计草案还是从一个遗留数据库开始 开发人员都可以采用Hibernate
四 Hibernate的应用
Hibernate对JDBC进行了非常轻量级的对象封装 使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库 Hibernate可以应用在任何使用JDBC的场合 它既可以在Java的客户端程序使用 也可以在Servlet/JSP的Web应用中使用 最具革命意义的是 Hibernate可以在应用EJB(Enterprise JavaBeans是Java应用于企业计算的框架)的J EE架构中取代CMP 完成数据持久化的重任
五 Hibernate API简介
Hibernate API中的接口可以分为以下几类
( ) 提供访问数据库的操作的接口 包括session Transaction Query接口
( ) 用于配置Hibernate的接口 Configuration
( ) 间接接口 使应用程序接受Hibernate内部发生的事件 并作出相关的回应 包括 Interceptor Lifecycle Validatable
( ) 用于扩展Hibernate功能的接口 如UserType CompositeUserType IdentifierGenerator接口
Hibernate内部还封装了JDBC JTA(Java Transaction API)和JNDI(Java Naming And Directory Interface) 其中 JDBC提供底层的数据访问操作 只要用户提供了相应的JDBC驱动程序 Hibernate可以访问任何一个数据库系统 JTA和JNDI使Hibernate能够和J EE应用服务器集成
Hibernate的核心接口框图
六 Hibernate的优缺点
( )优点
a Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性 b Hibernate 的性能非常好 因为它是个轻量级框架 映射的灵活性很出色 c 它支持各种关系数据库 从一对一到多对多的各种复杂关系
( )缺点
lishixinzhi/Article/program/Java/ky/201311/28756
Hibernate框架ORM的实现原理?
东方标准国际软件专业讲师,曾经负责过的重大的大型项目包括:全军武器装备
质量管理系统、全军办公自动化系统、日本NTT电信管理系统等。主要著作包括
《ASP.NET开发答疑200问》《ASP.NET开发实例导航》等。毕业于北京大学计算
机专业。
1. 什么是ORM
ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是
将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可
以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人
员以面向对象的思想来实现对数据库的操作。
2.什么是Hibernate
对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都
可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能
实现ORM的框架。能实现ORM这个功能的框架有很多,Hibernate可以说是这些框
架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在
自己的项目中实现ORM功能。
3.ORM的实现原理
现在在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错
误如何解决以及把它和Struts/Spring等框架相结合作为整个系统的解决方案。
在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的
功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题
就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们
也能够开发出自己的一款ORM框架。会使用 Hibernate的开发人员都知道,在使
用它实现ORM功能的时候,主要的文件有:映射类(*.java)、映射文件
(*.hbm.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的
作用如下。
⑴映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,
将来就可以实现把表中的记录映射成为该类的对象。
⑵映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据
库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对
应关系等。
⑶数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接
哪中数据库、登录用户名、登录密码以及连接字符串等。
在这三种主要的文件中,映射类为普通Java源文件、映射文件为XML格式、数据
库配置文件为Properties格式或者是XML格式。想理解“映射” 首先我们需要知
道如何解析这三种文件,即解析XML格式文件、解析Properties格式文件和解析
Java类文件。下面我们来分别探讨一下如何实现这些文件的解析。
⑴如何解析XML文件
前面我们说过映射文件是XML格式,数据库配置文件也可以是XML格式,因此如果
能解析XML文件我们就可以获取这两个文件的信息。XML文件格式我简单做下介绍
,比如tom这句就是一个XML格式的描述,name代表节点,节点必须有开始标记和
结束标记,在开始标记中我们可以添加一些属性的声明比如sex。解析XML的技术
可以分为两类那就是SAX和DOM,这两种方式的差别和优缺点大家可以上网查阅或
者我们会在以后的文章中提出,请大家关注。实现解析XML文件的功能很方便,
我们可以通过下载第三方的一些工具包如xml-apis.jar和 xercesImpl.jar等,
也可以使用JDK自带的工具类DocumentBuilderFactory、DocumentBuilder、
Document、Element等等,大家可以通过API文挡查阅这些类的说明。通过这些类
我们可以把XML文件的信息读入内存并通过类中的某些方法获取指定节点的名字
、值、属性名、属性值这些信息。
⑵解析Properties文件
数据库配置文件可以是XML格式也可以是Properties格式,Properties文件一般
采用“属性名=属性值”的形式描述信息。如果配置文件采用Properties文件描
述,我们就需要想办法解析这种类型的文件了。想解析Properties文件大家就需
要熟悉Properties这个类了,这个类有一些常用方法比如,load()加载指定文件
并读取文件中的属性信息,PropertyNames()返回所有属性名,getProperty ()
返回指定属性名的属性值。通过解析Properties文件我们可以得到连接数据库必
要的信息,然后通过底层JDBC技术与数据库建立连接。
⑶解析Java类文件
通过解析映射文件和数据库配置文件我们可以建立数据库的连接,可以得到映射
类的名字、属性名、数据库表名、字段名以及类型等信息。要把数据库中表的数
据映射成为对象,首先需要把表中的记录取出,然后将每个字段值给映射类对象
的每个属性,这个赋值过程要调用对象中的set方法。我们现在通过映射文件只
知道类名和属性名,如何根据类名和属性名调用相应的set和get方法,是一个关
键问题。在Java中有一种机制叫反射机制,使用这种机制我们可以得到类的信息
,包括类只用的修饰符、方法、属性、继承的父类以及实现接口等信息。反射机
制相关的类有Class、Field、Method以及 Constructor等。通过Class的
getFields()、getMethods()和getConstructors()方法得到相应的属性、方法和
构造方法。通过Field类的getName()、getType()和getModifiers()方法得到相
应的属性名、属性类型、属性修饰符信息。通过Method类getReturnType()可以
获取方法的返回类型,invoke()方法可以根据给定的方法名和参数值执行对象中
对应的方法。我们可以首先通过以上方法获取类中的属性名,然后拼写成setXXX
和getXXX方法名,最后根据方法名执行对应的方法,将数据库数据加载到对象中
。
此外要实现Hibernate机制还会涉及到一个技术点,那就是如何获取数据库的相
关信息。要实现这个功能,就需要大家了解JDBC的 DataBaseMetaData类和
ResultSetMetaData类,通过这两个类的方法我们就可以获取数据库表的字段名
、类型、大小等相关信息。
使用SSH框架的Hibernate,怎么配置hbm.xml文件和连接oracle数据库?
spring链接配置即可。
一、
org.springframework
spring-framework-bom
4.2.6.RELEASE
pom
import
二、
org.springframework
spring-context
org.springframework
spring-web
org.springframework
spring-webmvc
org.springframework
spring-core
commons-logging
commons-logging
三、在web工程的src/main/resources/META-INF目录下添加dispatcher.xml文件,并添加如下配置:
什么是Hibernate框架以及ORM
框架是一个建筑学上的概念,但是用在程序这是什么意思呢?
什么是框架?
1.写程序,使用框架之后,帮我们实现一部分功能,少写一部分代码就能实现我们的功能。
什么是Hibernate框架?
1、Hibernate框架是应用在javaEE三层结构中的dao层框架。
2、在dao层里面做对数据库的增删改查操作,使用Hibernate框架实现增删改查操作。Hibernate底层就是jdbc,对jdbc的轻量级的封装,使用Hibernate不需要写复杂的jdbc代码。
3、Hibernate是开源的、轻量级的框架。
轻量级的框架:Hibernate不需要依赖其他的东西就可以直接使用。
Hibernate是使用ORM思想对数据库进行的增删改查操作。
什么是ORM?
ORM(Object/Relational Mapping):对象/关系映射
是通过使用描述对象和数据库之间映射的数据,将java程序中的对象自动持久化到关系数据库中;
本质上就是将数据从一种形式转换到另外一种形式。
利用面向对象思想编写的数据库应用程序最终都是把对象信息保存在关系型数据库中,于是要编写很多
和底层数据库相关的SQL语句。
但是写SQL语句的缺点:
①不同的数据库使用的SQL语法不同。
②同样的功能在不同的数据库中有不同的实现方式。比如分页SQL。
③程序过分依赖SQL对程序的一直及扩展,维护等带来很大的麻烦。
简单叙述struts spring和hibernate开源框架功能和结合方式
典型的ssh架构恩,需要框架搭建的跟我说恩,
这个得从web分层来说,分为展现层 业务层 数据层。
意思不难,展现层给人们看收发请求并传给下层处理,业务层接收上层请求并初级业务然后发给下层,数据层接收上层业务处理完后的数据然后存储到数据库。
struts对应展现层,spring对应业务层,hibernate对应数据层,各自实现各自的功能。(但是界限也不是那么明显,比如spring还可以管理struts的action)。
具体的结合上呢,struts负责接收请求和请求转发像servlet那样,hibernate用于数据存储crud么的(后面你可能会接触到ibatis和mybatis等更多的orm框架)。这俩好理解。那么spring呢,干嘛?说专业点就是ioc和aop,说通俗点前者组件(即bean,比如一个User实例)注入,后者即声明式事务处理。
其实,spring也可以取代struts接受展现层的请求接收和转发,他也有自己的mvc框架。
最后,问一下。你是新学这几个框架吗?如果新学,先不要考虑集成的问题。按照struts hibernate spring顺序来学,hibernate较简单,spring稍有难度。
有问题,可以追问。
什么是hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
扩展资料:
发展历程
2004年,整个Java社区开始从实体bean向Hibernate转移,特别是在Rod Johnson的著作《Expert One-on-One J2EE Development without EJB》出版后,由于这本书以扎实的理论、充分的论据和详实的论述否定了EJB,提出了轻量级敏捷开发理念之后,以Hibernate和Spring为代表的轻量级开源框架开始成为Java世界的主流和事实标准。在2004年Sun领导的J2EE5.0标准制定当中的持久化框架标准正式以Hibernate为蓝本。
2006年,J2EE5.0标准正式发布以后,持久化框架标准Java Persistent API(简称JPA)基本上是参考Hibernate实现的,而Hibernate在3.2版本开始,已经完全兼容JPA标准。
参考资料来源:百度百科-开放源代码
参考资料来源:百度百科-Hibernate
Spring 对多种 ORM 框架提供了很好的支持,简单描述在 Spring 中使用 Hibernate的方法,并结合事务管理。
【答案】:在 context 中定义 DataSource,创建 SessionFactoy,设置参数;DAO 类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。在使用中如果遇到 OpenSessionInView 的问题,可以添加 OpenSessionInViewFilter 或OpenSessionInViewInterceptor。(详见Spring Framework 2.0 Reference的12.2节Hibernate) 声明式事务需声明事务管理器,在 context 中设置
指定属性,用
确定
和
。(详见Spring Framework 2.0 Reference 的9.5节声明
式事务管理)
在Eclipse中怎么集成spring和hibernate的配置
建议下载 MyEclipse 8.6版本 可以直接点击项目 把spring 和hibernate struts 等等框架集成进来 至于具体配置 可以到百度上随便一搜 有很多文章都讲述过,忘采纳
没用过eclipse,可能需要加spring跟hibernate的插件
然后右键项目找到add sping 和add hibernate的,安装提示集成
eclipse没有集成这些的向导,自己在工程里面导入需要的包,手动创建配置文件,比如applicationContext.xml
操作步骤如下:
1、bundle>=com.abc.def.lib.common:第三方jar包的统一管理,RCP中常用的jar包都在这边打包。当然,可以根据具体需要进行拆分;
2、bundle>=com.abc.def.properties:配置文件管理bundle,其可以动态读取Eclipse RCP的根目录下properties目录中的*.properties文件。新的业务Bundle也可以往此bundle中注册自己的properties文件。目录"%ECLIPSE_RCP_HOME%/properties/" 中的properties文件可供手动修改,如hibernate的数据库连接信息等;
3、bundle>=com.abc.def.lib.common:hibernate相关的jar包,依赖com.abc.def.lib.common 和 com.abc.def.properties两个bundle,MANIFEST.MF中增加: Eclipse-BuddyPolicy: dependent
4、bundle>=com.abc.def.lib.spring:Spring相关的jar包和相关的类,依赖com.abc.def.lib.common、 com.abc.def.properties、com.abc.def.lib.hibernate三个bundle,MANIFEST.MF中增加: Eclipse-BuddyPolicy: dependent
5、bundle>=com.abc.def.main:基础架构的入口bundle,这里进行RCP的初始化管理,依赖以上所有bundle。
6、RCP和SH的集成,很关键的一点就是上面红色字体标注部分,通过Eclipse的buddy机制实现bundle之间的双向访问。
7、bundle>=com.abc.def.lib.spring中,修改覆盖了jar包中的org.springframework.util.ResourceUtils,避免Spring访问Annotation标注的Service类时找不到类的问题。
8、Spring和Hibernate实现了真正的零配置,所有Entity和Service都通过Spring和Hibernate的Annotation直接定义。目前在bundle>=com.abc.def.lib.spring中,在DataSourceConfig类中,用Annotation定义了dataSource、sessionFactory、txManager等bean,其中,sessionFactory中,通过PackagesToScan设置了model的统一根节点:com.abc.def,只要在这个package(包括子包)下的Annotation定义的model,都将自动纳入到SH的管理。
9、bundle>=com.abc.def.main中,通过ApplicationContext appContext = new AnnotationConfigApplicationContext("com.abc.def"),得到ApplicationContext。