以前搞C++,开发模式和思维方式感觉不能用在Web开发里面。在我的测试project中,使用spring + hibernate。我想创建一个Hibernate的SessionFactory,我只想创建它一次,希望能保存它,然后到处使用;或者生成一个全局的applicationContext,供各个DAO从xml中创建bean对象,供整个应用程序使用,但一直不知道如何实现。另外,哪些高人能否告知,如何在Hibernate中使用oracle的Sequence?我看到generator可以指定为sequense,但配置文件中配置了,我的oracle数据库中那么多sequense,它用哪个呢?我在什么地方告知hibernate这个表用这个sequense,那个表用那个sequeense呢?初学java的web开发,感觉里面东西太多了。开源的技术也多,一头雾水,我前段时间一直觉得直接用JDBC最直接和直观,干嘛整个hibernate,还这么麻烦?现在对它又稍稍接受了点了。但目前真感觉自己在被这些这么多的技术拖累。也希望好心人指指路!
解决方案 »
- dblink连接不关闭问题
- 500空指针错误,请大家帮帮忙吧!
- 解析域名后出现的问题
- 如何只显示一条数据库中的记录
- 怎么在SSH里实现邀请反利?
- 做JSP快速开发平台,用delphi开发,有做过的兄弟进来交流下吧
- javascript取jsp数组下标的问题
- 小菜鸟的问题:如何创建和编译我的JSP文件呀?!
- 配置环境不成功!!!!
- java.lang.NegativeArraySizeException是什么错误
- 我们知道程序的入口是static void main方法,并且其只能调用static的方法,那么按理推断来说,所有的方法都应该是static的才对啊?怎么现
- structs项目中JBOSS启动问题,来者给分,不够再加
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static final ThreadLocal threadLocal = new ThreadLocal(); private static final Configuration cfg = new Configuration(); private static org.hibernate.SessionFactory sessionFactory;
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
} return session;
} public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null); if (session != null) {
session.close();
}
}
private HibernateSessionFactory() {
}}那啥````ORACLE我没用Hibernate连过``不知道了``
感谢你的解答。但SessionFactory它自身里面就保存了Session。其实供我们使用的是Session。换句话说,那么我想自己来创建一个Session,并且让它持续存在,直到我的应用服务器down下或者我控制它释放。你说得的单例模式,我网上搜了下。它仅仅是个设计模式的一种。我希望知道在spring或者说普遍的web应用中应该如何来实现呢?to BBXXL()
其实java并不是有多么高深,我觉得学java一定就是要吃透java核心的东西,比如它的反射机制、类型系统……(我知道得很少哈),其它的技术,我发现都仅仅是些工具和延伸而已,不用这些技术,你一样能做很多事情,只不过很麻烦。为什么C++里面就没有这么好的东西呢?象spring啊、hibernate呀,他们的设计思想都很好,关键就是C++的类型很弱,太靠近机器本身了,如果要实现起来太复杂了。我一直感叹java的类型系统和反射机制,所有我目前看到的这些工具(hibernate, spring)这些都是基于了这些java的语言特性。否则啥子都没得。另外ajax其实跟java应该没有太大干系。ajax好像也可以用在.net的Web应用程序里面吧(不敢肯定哈)。
<?xml version="1.0"?><!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" ><hibernate-mapping package="cn.net.fornet.cms.admin">
<class name="User" table="tb_admin_user" dynamic-insert="false" dynamic-update="false">
<cache usage="read-write"></cache>
<id name="id" type="long">
<generator class="sequence">
<param name="sequence">tb_admin_user_id_seq</param>
</generator>
</id>
<property name="name" column="name" type="string" not-null="true"/>
<property name="password" column="password" type="string" not-null="true"/>
</class>
</hibernate-mapping>
我也是刚从c#转过来的
唉,还要我三个礼拜内就把原来的项目用sevlet+ajax重新实现一遍
context.serAttribute()..
这样的对象会在站台的生存期一直存在。