spring + hibernate(annotation)折腾

1 applicationContext.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="autodetect">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!--<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>-->
<!--<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=car"></property>-->
<!--  <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property>-->
<!--<property name="url" value="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=car"></property>-->
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url"><value>jdbc:mysql://127.0.0.1:3306/test?useUnicode=true</value>
</property>
<property name="username" value="root"></property>
<property name="password" value="tdmedia"></property>
<!--<property name="validationQuery"><value>SELECT 1</value></property>试该数据库连接的可用性-->
<!--<property name="testOnBorrow"><value>true</value></property>在取出连接时进行有效验证-->
<!--<property name="testWhileIdle"><value>true</value></property>Connection空闲的时候就要进行认证-->
<!--<property name="timeBetweenEvictionRunsMillis"><value>3600000</value></property>DBCP清空线程睡眠的间隙,如值为负数则不运行该线程-->
<!--<property name="minEvictableIdleTimeMillis"><value>18000000</value></property>Connection对象可以在池中空闲的最小时间,单位为毫秒-->
<property name="initialSize"><value>10</value></property><!--初始化连接-->
<property name="maxIdle"><value>30</value></property><!-- 最大空闲连接-->
<property name="minIdle"><value>5</value></property><!--  最小空闲连接-->
<property name="maxActive"><value>1000</value></property><!--最大连接数量-->
<property name="logAbandoned"><value>true</value></property><!-- 是否在自动回收超时连接的时候打印连接的超时错误-->
<property name="removeAbandoned"><value>true</value></property><!-- 是否自动回收超时连接-->
<property name="removeAbandonedTimeout"><value>2</value></property><!-- 超时时间(以秒数为单位)-->
<property name="maxWait"><value>10000</value></property><!-- 超时等待时间以毫秒为单位-->
</bean>

<!-- 配置sessionFactory -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <property name="dataSource">
  <ref bean="dataSource" />
  </property>
<property name="hibernateProperties">
<props>
   <!--  <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>   -->
   <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>   
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.hbm2ddl.auto">create</prop>   
<prop key="hibernate.jdbc.fetch_size">
100
</prop>
<prop key="hibernate.jdbc.batch_size">
100
</prop>
</props>
</property>
<!-- 映射实体pojo 跟数据库表table -->
<property name="packagesToScan">
<list><value>com.nod.entity</value></list>
</property>
</bean>
<!-- 配置事务 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
       <property name="sessionFactory">
           <ref local="sessionFactory" />
       </property>
    </bean>
<!-- DAO service -->
<bean id="regionDao" class="com.nod.dao.RegionDAOImpl">
<property name="sessionFactory">

    <ref local="sessionFactory"/>
</property>
</bean>

2  applicationContext.xml另外种方式,是要配置hibernate.cfg.xml文件

3 hibernate 主键生成方式
  1 GenerationType.SEQUENCE
@Entity
@Table(name = "admin")
@SequenceGenerator(name = "seq", sequenceName = "admin_id_seq", allocationSize=1)


@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@Column(name = "id", unique = true, nullable = false)

  2 auto自动增长
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "region_id", unique = true, nullable = false)


4 测试个DAO

public List<Region> getAll(){
// return (List<Region>)getHibernateTemplate().find(" from Region");
}

猜你喜欢

转载自jiakechong.iteye.com/blog/1061629
今日推荐