hibernate配置文件基本组成(hibernate.cfg.xml和hibernate.hbm.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!-- property 元素用于配置Hibernate中的属性
            键:值 
          -->
          <!-- hibernate.connection.driver_class : 连接数据库的驱动  -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>


          <!-- hibernate.connection.username : 连接数据库的用户名 -->
        <property name="hibernate.connection.username">root</property>


          <!-- hibernate.connection.password : 连接数据库的密码 -->
        <property name="hibernate.connection.password">123</property>


          <!-- hibernate.connection.url : 连接数据库的地址,路径 -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatedemo</property>


        <!-------------------------------------------------------------------------------->


        <!-- show_sql: 操作数据库时,会 向控制台打印sql语句 -->
        <property name="show_sql">true</property>


        <!-------------------------------------------------------------------------------->


        <!-- format_sql: 打印sql语句前,会将sql语句先格式化  -->
        <property name="format_sql">true</property>


        <!-------------------------------------------------------------------------------->


        <!-- hbm2ddl.auto: 生成表结构的策略配置
             update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构. 
                     如果存在表结构,并且表结构与实体一致,那么不做修改
                     如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列.
             create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失)
             create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构.
             validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常.
          -->
        <property name="hbm2ddl.auto">update</property>

 	<!-------------------------------------------------------------------------------->

	<!--C3P0是免费的第三方的数据库连接池
	 <property name="hibernate.connection.provider_class"> 
            org.hibernate.connection.C3P0ConnectionProvider 
        </property> 
        <property name="hibernate.c3p0.max_size">20</property> 
        <property name="hibernate.c3p0.min_size">5</property> 
        <property name="hibernate.c3p0.timeout">50000</property> 
        <property name="hibernate.c3p0.max_statements">100</property> 
        <property name="hibernate.c3p0.idle_test_period">3000</property> 
        <!-- 当连接池耗尽并接到获得连接的请求,则新增加连接的数量 -->
        <property name="hibernate.c3p0.acquire_increment">2</property> 
        <!-- 是否验证,检查连接 -->
        <property name="hibernate.c3p0.validate">false</property>
	-->



        <!-------------------------------------------------------------------------------->


        <!-- 数据库方言配置 
         org.hibernate.dialect.MySQLDialect (选择最短的)
         -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>


        <!-------------------------------------------------------------------------------->


        <!-- hibernate.connection.autocommit: 事务自动提交  -->
        <property name="hibernate.connection.autocommit">true</property>


        <!-------------------------------------------------------------------------------->


        <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession -->
        <property name="hibernate.current_session_context_class">thread</property>


        <!-------------------------------------------------------------------------------->


        <!-- 引入ORM 映射文件 
            填写src之后的路径
         -->
        <mapping resource="com/itheima/a_hello/User.hbm.xml"/>
	<!--如果用的注解就把上面的一句话换成<mapping class="com.how2java.pojo.Product" />-->
    </session-factory>
</hibernate-configuration>

-----------------------------------------------------------------------------------------------------


   <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping package="com.how2java.pojo">
    <class name="Product" table="product_">

	<!--     <cache usage="read-only" />-->	//引入第三方的线程池的时候要把二级缓存注释掉
        <id name="id" column="id">
            <generator class="native">
            </generator>
<!--如果用的是oracle则把上面的generator注释掉
	<generator class="native">        
                <param name="sequence">bigsword.category_sequence</param>
            </generator>
-->
        </id>
 	<version name="version" column="ver" type="int"></version>//乐观锁的核心机制版本信息控制
        <property name="name" />
        <property name="price" />

        <many-to-one name="category" class="Category" column="cid" />

	//多对一设置
	//对应Product类中的category(有外键的)属性
	//class="Category" 表示对应Category类
	//column="cid" 表示指向 category_表的外键


<!--多对一和多对多用set起

	<set name="products" <!--cascade="delete"--> lazy="false">  		//属于“一”的类中有外键的属性,lazy是延迟加载在一对多的时候会有用,打开为了减少内存开销。
										//级联cascade 删除级联,更新级联"save-update"
            <key column="cid" not-null="false" />	//在所对应的一当中的外键
            <one-to-many class="Product" />		//对的属于“多”的属性名
        </set>
-->
    </class>

     
</hibernate-mapping> 

c3p0多并发时,性能急剧下降。可以用druid

c3p0多并发时,性能急剧下降。推荐用druid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值