公司之前的旧项目,没看懂,这个里面的sessionFactory在哪里连接数据库和服务的,谁能指点下吗
package com.janus.dao.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
import com.janus.dao.IUserDao;
import com.janus.model.User;
@Repository
public class UserDaoImpl implements IUserDao{
@Autowired
private SessionFactory sessionFactory;
private Session getCurrentSession(){
return this.sessionFactory.openSession();
}
public User findUserByUsername(String username){
User user = new User();
Session session = getCurrentSession();
try{
Query query = session.createQuery("from User where loginName = :username").setParameter("username", username);
List<User> list = query.list();
if(list.size() > 0){
user = list.get(0);
}
}catch(Exception e){
e.printStackTrace();
}finally {
if(session.isOpen()){
session.close();
}
}
return user;
}
public User load(Long id) {
// TODO Auto-generated method stub
return null;
}
public User get(Long id) {
// TODO Auto-generated method stub
return null;
}
public List<User> findAll() {
// TODO Auto-generated method stub
return null;
}
public void persist(User entity) {
// TODO Auto-generated method stub
}
public Long save(User entity) {
// TODO Auto-generated method stub
return null;
}
//更新保存用户
public void saveOrUpdate(User user) {
Session session = getCurrentSession();
try {
//开启事务
session.beginTransaction();
//session执行
session.saveOrUpdate(user);
//事务提交
session.getTransaction().commit();
} finally {
if(session.isOpen()){
session.close();
}
}
}
public void delete(Long id) {
// TODO Auto-generated method stub
}
public void flush() {
// TODO Auto-generated method stub
}
@Override
public List<User> findUserPageByCondition(int pageSize, int pageNumber, String loginName, String name) {
List<User> list = new ArrayList<User>();
Session session = getCurrentSession();
try{
StringBuffer sb = new StringBuffer("from User where 1 = 1");
if(!StringUtils.isEmpty(loginName)){
sb.append(" and loginName = '" + loginName + "'");
}
if(!StringUtils.isEmpty(name)){
sb.append(" and name like '%" + name + "%'");
}
//System.out.println("sql condition:" + sb.toString());
//开启事务
session.beginTransaction();
Query query = session.createQuery(sb.toString());
if(pageNumber < 0){
pageNumber = 0;
}
if(pageSize <= 0){
pageSize = 10;
}
query.setFirstResult(pageNumber);//从第几条记录开始
query.setMaxResults(pageSize);//取出多少条数据
list = query.list();
//事务提交
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally {
if(session.isOpen()){
session.close();
}
}
return list;
}
@Override
public Long countUser(int status) {
Long totalAll = 0L;
Session session = getCurrentSession();
try{
String hql = "SELECT COUNT(*) FROM User";
session.beginTransaction();
Query query = session.createQuery(hql);
totalAll = (Long) query.uniqueResult();
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally {
if(session.isOpen()){
session.close();
}
}
return totalAll;
}
@Override
public int deleteUsersBatchByIds(int[] ids) {
int rst = 0;
Session session = getCurrentSession();
try{
StringBuffer sb = new StringBuffer("UPDATE User SET status = '0' Where id IN (");
String str = "";
for(int i = 0; i < ids.length; i++){
str += ids[i] + ",";
}
sb.append(str.substring(0, str.length()-1) + ")");
session.beginTransaction();
Query query = session.createQuery(sb.toString());
rst = query.executeUpdate();
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally {
if(session.isOpen()){
session.close();
}
}
return rst;
}
}
这是hibernate框架,连接数据的信息应该在xml里面,你找找应该有个hibernate.xml 类似名字的配置文件
这个说来话长了,你如果没有显式地在代码中找到创建SessionFactory对象 或者在xml配置中找到实例化SessionFactory,那可能是 Hibernate提供了内置的SessionFactory实例化机制。或者你把Hibernate的xml配置贴出来,我再诊断一下。看看有没有类似
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
或者
<hibernate-configuration>
<session-factory>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="com/oristand/hibernate/pojo/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
```java
#sqlserver
jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://192.168.1.199:1433;DatabaseName=wages
jdbc.username=sa
jdbc.password=Admin@199+data
``` 我找到了数据库的连接设置的地方,只是没看懂在哪里调用的