2012-02-13 48 views
10

có cách nào để xác định các đối tượng trong hibernate.cfg.xml theo phạm vi chứ không phải từng cái một?Hibernate + Spring MVC: cấu hình ánh xạ đối tượng

Ví dụ, trong mùa xuân, bạn có thể xác định tất cả các bộ điều khiển bằng cách chú thích như:

<context:component-scan base-package="crm.controller" /> 

Tôi có thể xác định các lớp ngủ đông trong cùng một cách? Hoặc nó phải được xác định từng cái một?

Cảm ơn bạn

+0

câu hỏi liên quan: http://stackoverflow.com/q/1413190/211197 http://stackoverflow.com/q/2419802/211197 – maksimov

Trả lời

1

Nếu bạn đang sử dụng Spring MVC, bạn có thể định cấu hình nó khi thiết lập sessionFactory của mình. Nếu bạn đang sử dụng các file hbm:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="mappingResources"> 
     <list> 
      <value>file1.hbm.xml</value> 
      <value>file2.hbm.xml</value> 
     </list> 
    </property> 
    <property name="hibernateProperties" ref="hibernateProperties"/> 
</bean> 

Nếu bạn đang sử dụng các lớp học chú thích:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.me.domain"> 
    <property name="hibernateProperties" ref="hibernateProperties"/> 
</bean> 
0

Hãy thử sử dụng:

<mapping package="com.mycompany.model" /> 

thay vì một tập hợp các yếu tố:

<mapping class="com.mycompany.model.EntytyOne" /> 
<mapping class="com.mycompany.model.EntytyTwo" /> 
+0

Không làm việc cho tôi – nKognito

+0

Ông có thể cung cấp thêm chi tiết? Bạn có gặp lỗi trong nhật ký không? Bạn có thể dán chúng ở đây có lẽ? –

+0

Khi tôi sử dụng gói ánh xạ, nó mang lại cho tôi lỗi Không tìm thấy thực thể – nKognito

0

Tại sao không bạn thử loại này. Tôi có cấu hình này trong springDAOcontext.xml

<bean id="csiSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
     <value>classpath:hibernate/hibernate.cfg.xml</value> 
    </property> 
    <property name="dataSource" ref="DataSource"/> 

    <property name="mappingResources"> 
     <list> 
      <value>hibernate/*</value> 
        </list> 
        <property> 
0

Theo như tôi có thể nhớ, Hibernate vì nó nằm ngoài hộp, không hỗ trợ "package-sanning" để khám phá các lớp miền của bạn. Tuy nhiên, nếu bạn tích hợp Hibernate với Spring MVC, bạn có thể chú thích các lớp của bạn (chú thích JPA + Hibernate tiêu chuẩn) và trong tệp cấu hình ngữ cảnh Spring của bạn, chỉ định gói chứa các lớp thực thể Hibernate. Đây là cách tôi đã định cấu hình nó trong một dự án trước:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="org.springmvc.domain" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
      <prop key="show_sql">true</prop> 
      <prop key="log_level">DEBUG</prop> 
     </props> 
    </property> 
</bean> 

Thuộc tính "packagesToScan" xác định các gói mà Spring sẽ có Hibernate scan để khám phá các lớp thực thể.

0

im sử dụng JPA chú thích @ Entity, mã của applicationContext.xml là:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.yourcompany.module" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     </props> 
    </property> 
</bean> 

Đường dẫn gói "com.yourcompany.module" là gói thực thể java của bạn, ví dụ:

package com.yourcompany.module; 
@Entity 
class MyEntity{ 
    private Long id; 
    set get... 
} 
Các vấn đề liên quan