我如何在mycode中解析getCurrentSession()

时间:2017-01-07 10:32:14

标签: java spring-4 hibernate-4.x

我是java,spring和amp; hibernate的初学者。当我使用sessionFactory.getCurrentSession().saveOrUpdate(employee); igot错误。但是当我使用sessionFactory.openSession().saveOrUpdate(employee);时,数据库插入是可能的。我想使用getCurrentSession()而不是开放会话。

mycode的

myservice是

package com.simplecrud.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.simplecrud.dao.EmployeeDao;
import com.simplecrud.model.Employee;


@Service("employeeService")
@Transactional
public class EmployeeService {

    @Autowired
    EmployeeDao dao;

    @Transactional
    public String create(Employee employee)
    {  
        System.out.println("service"+employee);
        dao.create(employee);
        return null;
    }

}

我的道歉

package com.simplecrud.dao;


import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;


import com.simplecrud.model.Employee;


@Component
@Repository
public class EmployeeDao {

 @Autowired
 SessionFactory sessionFactory;

 public void create(Employee employee){

     sessionFactory.openSession().saveOrUpdate(employee);
     /*sessionFactory.getCurrentSession().saveOrUpdate(employee);*/
    /* protected Session getSession(){
            return sessionFactory.getCurrentSession();
        }*/
 }
}

配置文件

package com.simplecrud.configuration;  

import java.util.Properties;

import javax.sql.DataSource;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.ComponentScan;  
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;  
import org.springframework.web.servlet.view.JstlView;  
import org.springframework.web.servlet.view.UrlBasedViewResolver;  

@Configuration //Marks this class as configuration
//Specifies which package to scan
@ComponentScan("com.simplecrud")
//Enables Spring's annotations 
@EnableWebMvc   
public class Config {  

    @Bean  
    public UrlBasedViewResolver setupViewResolver() {  
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();  
        resolver.setPrefix("/WEB-INF/views/");  
        resolver.setSuffix(".jsp");  
        resolver.setViewClass(JstlView.class);  
        return resolver;  
    } 
    @Bean(name = "dataSource")
    public DriverManagerDataSource dataSource() {
        DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver");
driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/employee_db");
        driverManagerDataSource.setUsername("root");
        driverManagerDataSource.setPassword("mysql");
        return driverManagerDataSource;
    }

     private Properties getHibernateProperties() {
            Properties properties = new Properties();
            properties.put("hibernate.show_sql", "true");
            properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        //    properties.put("hibernate.hbm2ddl.auto", "update");
            properties.put("hibernate.c3p0.minPoolSize", "5");
            properties.put("hibernate.c3p0.maxPoolSize", "10");
            properties.put("hibernate.c3p0.idleTestPeriod", "300");
            properties.put("hibernate.c3p0.timeout", "600");
            properties.put("hibernate.c3p0.max_statement", "50");
            properties.put("hibernate.c3p0.testConnectionOnCheckout", "false");
            properties.setProperty("timeZone", "serverTimezone");
            properties.put("hibernate.c3p0.preferredTestQuery", "select 1");
            return properties;
        }


        @Autowired
        @Bean(name = "sessionFactory")
        public SessionFactory getSessionFactory(DataSource dataSource) {
            LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
            sessionBuilder.addProperties(getHibernateProperties());
            sessionBuilder.scanPackages("com.simplecrud.model");
            //sessionBuilder.setInterceptor(new MySQLCalcFoundRowsInterceptor());
            return sessionBuilder.buildSessionFactory();
        }


        @Autowired
        @Bean(name = "transactionManager")
        public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
            HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
            return transactionManager;
        } 


}  

帮助我任何人......

0 个答案:

没有答案