dao层一般是放一些关于对数据库的操作的内容,那么开session,开事务和事务提交,关闭session之类的也是放在 dao层吗??
解决方案 »
- 关于整合spring和jpa时启动就报错,找了2天错了,实在是找不出来,求高手
- 哪位有jbpm4的开发案例不?
- 有没有可以简单明白的解释一下序列化的作用
- For,for,help..
- 求助J2EE高手
- 散分!明天就可以和慧通的南京分公司签约了,有了解的谈谈这个公司的情况吧!
- 我自己定义了一个Action类,包名已在其中设置好,为什么我在C:\根目录下编译的时候出现了这些错误
- 请问哪儿有比较好的jdbc3.0下载,我现在用jdbc2.0不支持rs.absolute()等方法。
- 请问如何把JBOSS自带的WEB服务停掉?因我已经装有TOMCAT
- 问题标签用户 急 处理大量数据 查找出重复的并去重(去重的导入另一张表中)
- 求助,jQuery拿不到返回值。。
- java写一段程序,验证生成的触发器是否可用?
例如 session.save()这样的方法,没session怎么用?
import java.util.*;public final class UserDAO {
public static int chkUserName(String name) throws HibernateException
{
Session hsession=HibernateUtil.currentSession();
Transaction tx = hsession.beginTransaction();
int n=-1;
int id=-2;
String q = "from User as user where user.name='"+name+"'"; Query query2 = hsession.createQuery (q);try{
List list=query2.list();
n=list.size();
for(int i=0;i<list.size();i++)
{
User g2=(User)list.get(i);
id=g2.getId(); }
}catch (Exception e) {
System.out.println(e.getMessage());
}finally{ tx.commit();
HibernateUtil.closeSession();
}return n;
}
public void saveName(String name) throws HibernateException
{
Session hsession=HibernateUtil.currentSession();
Transaction tx = hsession.beginTransaction();
User user=new User();
try{
user.setName(name);
hsession.save(user);
hsession.flush();
}catch (Exception e) {
System.out.println(e.getMessage());
}finally{ tx.commit();
HibernateUtil.closeSession();
}
}
public List getGbooks() throws HibernateException{
Session session=HibernateUtil.currentSession();
Transaction tx = null;
List list=null;
try {
tx = session.beginTransaction();
Query query = session.createQuery ("select user from User as user ");
list = query.list();
tx.commit();
}catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
System.err.println("getGbook:"+e.getMessage());
} finally {
//session.close();
}
return list;
}
}
Session hsession=HibernateUtil.currentSession();
Transaction tx = hsession.beginTransaction(); 这2句代码是不是 放在dao层~
public int saveModuleList(Mod...mods ) {
return moduleDao.save(mods);
}
应该是想法问题吧!一直没放入Dao里。
回答LZ的问题,将你的那两句加入到DAO层完全可以,但是要看你具体的环境了,比如你开发的是一套业务系统,那么一个业务可能是处于一个事物当中,这种情况需要将事物拿到DAO外面控制,但是这样比较麻烦了就,还有就是操作太多,没准会引起一些数据库死锁问题。放到DAO层可以,但是遇到长事务就不行了,而且短事物多了还会影响性能。
找点j2ee patterns之类的书,会对你有帮助的。
DAO -- 数据库访问对象
它的职责就是专门和数据库打交道,应该说开始事务、提交事务、关闭连接是在DAO层
至于开启时session、关闭session那不一定,因为你用了hibernate框架,而hibernate
它是通过session来管理与数据库的操作,既然你的事务是加在DAO层了,那session的操作
也就再这一层了,项目中如果你不抽取一个DAO层来,就直接一个业务逻辑层(manager/service)
那么这时候session
就是业务逻辑这一层了
顾名思意,只管访问数据,如从数据库。
无论你使用不使用框架,都最好抽象出一个service层,将事务加到Serviece层,这样方便事务的回滚,如果加到Dao层,那么业务和数据库操作掺到了一起将很难维护。这个也是MVC模式最基本的思想。
事务一般都是放在service层中的 ,因为service中 可能会执行多个操作
SSE-JAVA 招聘中。。
上海/北京/武汉
? Be responsible for application design, technical design
? Be responsible for application development, unit testing and system integration testing and implementation
? Maintain and design project related documentation
? Troubleshooting critical bugs, critical issues
? Lead junior developers to finish tasks on time
? Bachelor degree or higher with a major in computer engineering or related
? 7+ years experience in solution design and software development
? Proficiency in Java/J2EE related design, development, testing, debugging skills
? Strong developing experience on Oracle or SQL Server
? Good verbal and written communication in Chinese and English
? Airline industry background is a plus 有意向者
请联系QQ635844351
MSN:[email protected]
那么在dao层里 如果对数据库进行操作
例如 session.save()这样的方法。这个地方的session怎么来呢? 因为session是在service里open的~
在dao里 还要再开一个? 那不是开了2个session了~
用spring来管理吧
建议不要混在一起因为势必会影响的