hibernate annoation (一 加载)

一,配置文件加载

1,Configuration

如果不是annoation则可以使用Configuration configuration = new Configuration();

使用annoation则可以使用Configuration configuration = new AnnotationConfiguration();

2,加载,使用onfiguration的configure方法根据方法参数可以有一下几种加载方式:

(1)configure();

吃方法会去classpath下寻找我们的配置文件

其实调用了configure( "/hibernate.cfg.xml" );也就是 configure(String resource);方法

(2)configure(String resource);

最常用方的方法,其实调用了doConfigure(InputStream stream, String resourceName);

说明一点内部代码:

ConfigHelper.getResourceAsStream( resource );

Java代码

 String stripped = resource.startsWith("/") ? 
  resource.substring(1) : resource;
 
 InputStream stream = null;
 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
 if (classLoader!=null) {
  stream = classLoader.getResourceAsStream( stripped );
 }
 if ( stream == null ) {
  stream = Environment.class.getResourceAsStream( resource );
 }
 if ( stream == null ) {
  stream = Environment.class.getClassLoader().getResourceAsStream( stripped );
 }
 if ( stream == null ) {
  throw new HibernateException( resource + " not found" );
 }
 return stream;

第一行高数我们"/hibernate.cfg.xml" 可以去掉前面的“/”其中调用了Thread.currentThread().getContextClassLoader();一般也就是我们的AppClassLoader

由stream = Environment.class.getResourceAsStream( resource );可以看出我们的"/hibernate.cfg.xml同样可以放在与和Environment同样的目录具体到我们的代码里面在使用(3),(4),(5)时可以放在加载 类的包内或其他

(3)configure(URL url);

doConfigure( url.openStream(), url.toString() );调用(5)

(4)configure(File configFile);

doConfigure( new FileInputStream( configFile ), configFile.toString() );调用(5)

(5)doConfigure(InputStream stream, String resourceName);

使用dom4j解析文件为Document然后

xmlHelper.createSAXReader( resourceName, errors, entityResolver )

.read( new InputSource( stream ) );

掉用

(6)configure(Document document);

在这个方法里会解析所有配置信息和mapping类或者hb文件

时间: 2024-11-08 19:56:56

hibernate annoation (一 加载)的相关文章

问一个hibernate的懒加载的问题

问题描述 问一个hibernate的懒加载的问题 1.我定义Survey和Page类,Survey设置Page的集合属性,然后建立双向关联,我故意把集合注解成懒加载... 2.然后我通过这段代码把Page集合重数据库取出 3.然后调用Survey的get方法得到集合,再把Page一个一个放进集合中去 4.然后再外面迭代Survey的page集合抛异常是懒加载为什么?为什么?为什么? /* *通过survey的id取出survey *(我用spring在这方法上面配置了事务) */ public

hibernate去除懒加载后出现了问题

问题描述 有两张表,draft表和playissue表,draft单向关联playissue表.所有懒加载都已经去除.我在dao层查询draft表,把playissue加载入draft中.Stringhql="fromBetDraftbdwherebd.tranceCode=?";BetDraftbetDraft=(BetDraft)this.getObject(hql,tranceCode);Hibernate.initialize(betDraft.getPlayIssue());

hibernate 一对多映射 懒加载

   //从一的一端查询        //hibernate 默认使用懒加载       ClassRoom cr=(ClassRoom) session.get(ClassRoom.class, 1);//get方法不会懒加载,会直接查询ClassRoom数据库,       //但不会发出查询和他一对多的两个数据库的sql       cr.getStu();//默认设置,不会发出sql语句,在<class name="ClassRoom" table="t_cl

hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题

引用地址 在使用Spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例:   Java代码   @RequestMapping("login")       @ResponseBody       public Object login(@RequestParam String username,@RequestParam String password){           List<User> list=user

Spring中解决Hibernate的lazy加载问题

 今天又花了一天时间做单位的搜索网站,主要是增加权限管理的功能,完成了一部分功能,今天的时间主要花在了,spring中调用hibernate的问题,碰到两个问题.一个是双向多对多关联问题,一个是设置lazy=true时的问题.关于第一个多对多问题,原来是把多对多关联,分解为两个一对多关联,但是在spring中,调用getHibernateTemplate保存对象总是报错,呵呵,错误记不得了.也始终没弄明白什么原因.后来想想就改用,组件类集合来处理多对多关联,也就是用composite-eleme

Hibernate懒加载解析

Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来弥补这种缺陷,但是这只是弥补而不是用了懒加载总体性能就提高了. 我们所说的懒加载也被称为延迟加载,它在查询的时候不会立刻访问数据库,而是返回代理对象,当真正去使用对象的时候才会访问数据库.    实现懒加载的前提:  1 实体类不能是final的 2 能实现懒加载的对象都是被CGLIB(反射调用)改

hibernate3-spring mvc OpenSessionInViewFilter hibernate 懒加载问题

问题描述 spring mvc OpenSessionInViewFilter hibernate 懒加载问题 之前做了一个项目是使用 springmvc 加hibernate 做的, 并且使用了 hibernate 的懒加载有用到OpenSessionInViewFilter, 现在做另一个项目, 基础代码都是上个项目的代码: 目前调试在调试权限模块, 核对了上个项目的代码基本完全一致,但是这个项目的老是无法使用懒加载,加载报 org.hibernate.LazyInitializationE

Hibernate中双向关联加载排序的解决方案

问题:Hibernate的<many-to-many>双向关联中,一方加载另一方时,怎么样达到按自定义规则排序的目的呢? 实例:角色和菜单是多对多的关系,为角色分配菜单后,加载菜单时,我需要按照菜单的ID来排序显示. 解决办法: 1. 通过在hbm配置文件中配置解决,需要自定义比较器. 1) 在多对多的主控端指定sort属性 这里的主控端为role,受控端为menu. role的配置为: <set name="roleMenus" table="ROLE_M

hibernate 5.0.5 中必须加载的包有哪些。

问题描述 hibernate 5.0.5 中必须加载的包有哪些. ,第一次提问,网上搜了好久,一直没找到答案,所以来问问,小白,高手轻喷. 刚开始学hibernate 从官网下载了文件,照着官网的教程做第一个实验.就是EVENT,那个, 项目全部做好后,报错NoClassDefFoundError,觉得是少包吧,所以干脆所有包都导进去,但是仍然报错. 还是NoClassDefFoundError,网上有人说是slf4j,但是现在不是自带了jboss的吗? 有人简单帮忙介绍下导包的问题嘛? 解决方