在spring中使用hibernate

/ 0评 / 0

一、基本配置

在Spring的servlet-context.xml文件中添加

  <!-- 配置数据库 -->
    <!-- 简单的使用jdbc的DriverManagerDataSource,没有连接池 -->
    <beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <beans:property name="url" value="jdbc:mysql://localhost:3306/your_database" />
        <beans:property name="username" value="your_name" />
        <beans:property name="password" value="your_password" />
    </beans:bean>
    <!-- 配置hibernate的session factory -->
    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="dataSource" />
        <!-- 定义去哪些包下扫描实体类(@Entity注解) -->
        <beans:property name="packagesToScan">
            <beans:list>
                <!-- 可以加多个包 -->
                <beans:value>com.funway.mybet.model</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>
                <beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop>
            </beans:props>
        </beans:property>
    </beans:bean>

然后如果没有Lib的话,我们需要在maven的pom.xml配置文件中添加如下几个dependency,来自动添加hibernate所需要的库。

屏幕快照 2016-02-26 下午2.54.42

然后定义一个获取User的Dao(暂时,我们不考虑User实体类,以及它与数据库User表的映射关系,只考虑从User表中获取用户数)

@Repository
public class UserDaoHibernate {
    
    @Autowired
    private SessionFactory sessionFactory;
    public int getUserCounts() {
        Session session = sessionFactory.openSession();
        Query query = (Query) session.createSQLQuery("select count(*) from mb_user");
        int counts = Integer.parseInt(query.list().get(0).toString());
        session.close();
        return counts;
    }
    
}

上面,我们使用@Repository注解声明自动生成一个UserDaoHibernate类型的实例对象,用@Autowired注解将servlet-context.xml中定义的sessionFactory注入到成员属性中。

然后,我们就可以在任意地方调用这个UserDaoHibernate实例的getUserCounts( )方法了。以一个Controller为例:

@Controller
public class HomeController {
@Autowired
private UserDaoHibernate userDao;
        /**
         * ...省略
         **/
  
@RequestMapping(value="/hiber", produces = "text/plain;charset=UTF-8")
public @ResponseBody String testJdbcTemplate() {
    return "已注册用户数: " + userDao.getUserCounts();
}

二、使用xml配置的声明式事务

晚点写!!!!!!!!!!!!!!!!!!!!!!!!现在没空要吃饭

  1. 增达任务网说道:

    相当不错,自愧不如!

增达任务网进行回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注