对象的状态: Session中 数库中-----------------------临时无无持久化有最终会有游离无有删除调用了delete()方法后1,操作实体对象的Session方法save()update()saveOrUpdate()delete()2,操作缓存的Session方法clear() 清空Session缓存,不会执行sql语句。evict()flush() 马上执行sql语句,不会清楚Session缓存。3,查询实体对象的Session方法get()load()createQuery()createCriteria()package test.hibernate.session;public cl...
在<many-to-on>中这错误很常见,字面意义就是不能被初始化,因为session已经关闭了。简单理解就是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据。而往往我们在jsp页面中使用getXXX()准备展示数据的时候,session早已经在dao中就关闭了,我们该如何解决这种异常呢?简单的说...
在项目中使用了SSH框架(Struts2 + Spring3+ Hibernate3),applicationContext中配置了sessionFactory<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"ref="dataSource"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect" >org.hibernate.dialect.SQLServerDialect</prop><prop key="hibernate.jdbc.batch_size">20...
package hibernate.test;import hibernate.test.pojo.Person;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder;public class Test { public static void main(String[] args) {// TODO Auto-generated method stub C...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!--<property name="configLocation" value="hibernate.cfg.xml"></property>--> (3)<property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> <prop key="hibernate....
出现这个异常的原因就是把一个瞬态对象当做持久化对象来操作了。解决的办法当然就是把对象持久化了,可以调用session的save() 或者saveOrUpdate()方法下面来科普一下hibernate在对象中的三种状态:简单的说一下就是这样子,1、当一个对象被new了以后此对象处于瞬时态(Transient);2、然后对此对象执行session的save() 或者saveOrUpdate()方法后,此对象被放入session的一级缓存进入持久态.2、当再对此对象执行evict()/close()/c...
删除方法:新建的对象立马被删除@Testpublic void testDelete() {Teacher t = new Teacher();t.setName("t1");t.setTitle("middle");t.setBirthDate(new Date());Session session = sessionFactory.getCurrentSession();session.beginTransaction();session.save(t);System.out.println(t.getId());session.getTransaction().commit();Session session2 = sessionFactory.getCurrentSession();session2.beginTransaction();session2...
(1)异常信息如下:严重: Servlet.service() for servlet action threw exception java.lang.RuntimeException: <u>No CurrentSessionContext configured!</u>at com.lc.utils.HibernateUtil.executeQuery(HibernateUtil.java:56)at com.lc.service.UsersService.checkUser(UsersService.java:22)at com.lc.struts.action.LoginAction.login(LoginAction.java:38)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)...
今天晚上挺悲催的,遇到了这个问题花费我很长时间,现在总结如下:到这这种情况的发生有两种情况:1,没有配置事物只要在Spring配置文件中添加如下代码: <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:annotation-driven transaction-manager="txManager"/>然后在DAO程序前面加上@Tr...
情况为:使用 getCurrentSession()方法(且配置了Session的生命周期与线程绑定)获取Session进行操作时,出现 Session is closed 异常,但使用openSession()方法没问题。详细代码情况和异常如下:解决:查完资料后得知:使用getCurrentSession()方法,进行事务提交(commit()方法)后,Hibernate框架会自动把Session缓存中的内容清空,并关闭。所以此时不需要再手动自行关闭,将 session.close()注释掉即可。原文:http://blog.51cto.com...
8.8.2 管理Hibernate的SessionFactory 当通过Hibernate进行持久层访问时,必须先获得SessionFactory对象,它是单个数据库映射关系编译后的内存镜像。在大部分情况下,一个Java EE应用对应一个数据库,即对应一个SessionFactory对象。 Spring 的IoC容器不仅能以声明式的方式配置SessionFactory实例,也可充分利用IoC容器的作用,为SessionFactory注入数据源引用。 XML : Spring配置文...
使用Session里面的方法进行CRUD操作 (1) 增加 save 方法 (2) 查找 get 方法(根据id查) (3) 修改 update 方法 (4) 删除 delete 方法 1、增加/*** 增加操作*/publicvoid testCreate(){//找到src下名为hibernate.cfg.xml的配置文件,加载核心配置文件。Configuration cfg = new Configuration();cfg.configure();//创建SessionFactory对象,在核心配置文件中找到各个映射文件如User.hbm.xml。//一般一个项目只创建一个SessionFactor...
本来考虑的是懒加载,这样可以提高效率,不过由于时间紧急把懒加载改为急加载临时解决另一个办法是不适用hibernate的事务管理,用serlvet处理,参考https://www.jianshu.com/p/89520964f458有时间再弄原文:https://www.cnblogs.com/jnhs/p/11444739.html
session概述Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载Java 对象的方法.session的产生方式session的产生方法一session的产生方法二 配置hibernate.cfg.xml文件 测试session的产生方式 package cn.itcast.hibernate0909.session;import java.lang.annotation.Target;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate....
session的方法:save(): insert调用save方法之后,瞬时态对象可以变成持久态;update():update将游离态对象变为持久态saveOrUpdate():insert or update merge():merge()方法可以完成save()和update()方法的功能,它的意图是将新的状态合并到已有的持久化对象上或创建新的持久化对象。将游离态对象变为持久态。lock():lock()方法是把一个没有更改过的脱管状态的对象变成持久状态。persisit():persist()方法保证当它在一个事务外部被...