как удалить свойство ресурса отображения из файла hibernate.cfg - PullRequest
2 голосов
/ 05 июня 2010

Я сейчас работаю над одним проектом. В моем проекте есть много файлов entity / POJO. В настоящее время я использую простой файл hibernate.cfg.xml, чтобы добавить все файлы сопоставления в конфигурацию, например: -

<mapping resource="xml/ClassRoom.hbm.xml"/>
<mapping resource="xml/Teacher.hbm.xml"/>
<mapping resource="xml/Student.hbm.xml"/>

У меня огромное количество файлов сопоставления, поэтому мой файл hibernate.cfg выглядит немного грязно, так что есть ли способ, чтобы мне не нужно было добавлять вышеупомянутое в файл hibernate.cfg. скорее может быть любой другой способ добиться того же самого .. пожалуйста, помогите

Ответы [ 4 ]

1 голос
/ 05 июня 2010

Вы можете создать Configuration программно и использовать Configuration#addClass(Class) для указания сопоставленного класса (и Hibernate загрузит файл сопоставления для вас). Из Javadoc:

Считайте отображение как ресурс приложения, используя соглашение о том, что класс имя foo.bar.Foo отображается файлом foo/bar/Foo.hbm.xml который может быть разрешен как ресурс classpath.

Так что вы можете сделать что-то вроде этого:

Configuration cfg = new Configuration()
    .addClass(org.hibernate.auction.Item.class)
    .addClass(org.hibernate.auction.Bid.class)
    ...
    .configure();
SessionFactory factory = cfg.buildSessionFactory();

Смотри также

0 голосов
/ 20 июля 2010

Метод конфигурации addDirectory () / addJar () использует все файлы .hbm.xml, найденные в указанном каталоге / JAR-файле. вам нужно жестко закодировать это местоположение, но только это

0 голосов
/ 06 июня 2010

Сам класс конфигурации Hibernate не предоставляет магический метод addAllEntities.Но вы можете использовать метод AnnotationSessionFactoryBean setPackagesToScan .Имейте в виду, что он работает только при использовании аннотированного класса Entity и является классом, зависящим от Spring

AnnotationSessionFactoryBean sessionFactory = new AnnotationSessionFactoryBean();

sessionFactory.setDataSource(<javax.sql.DataSource> implementation goes here)
sessionFactory.setPackagesToScan(new String [] {"xml"});
0 голосов
/ 05 июня 2010

Да, использовать аннотации .

@Entity
public class Teacher {

    @Column
    private String name;

    @Column
    private String address;

    etc..
}

Hibernate автоматически обнаружит классы, помеченные @Entity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...