SPRING-SOURCE.RU

Базовая конфигурация

                        
/META-INF/persistence.xml // именно этот файл ищется классом Persistance
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="unit name">

    <provider> full JPA provider class name </provider>
    <class> package.ClassName </class>
    <properties> provider properties </properties>

</persistence-unit>
</persistence>
		

В одном файле xml можно определить несколько unit. С каждым unit может работать свой провайдер, каждый unit будет обращаться к своей базе. Чаще всего определяют один unit. Unit нужно дать уникально имя, которое позже я буду использовать при создании фабрики (CreateEntityManagerFactory(имя)).

Потом нужно указать провайдера.

Далее, необязательно - список классов, которые будут использоваться в работе. Почему необязательно? Некоторые провайдеры, как hibernate, могут делать это автоматически. Далее, мы пишем свойства, относящиеся к конкретному провайдеру. Это подключение к базе данных (url, login, password итд. для конкретного провайдера). Эти свойства считываются провайдером и потом создается фабрика.

Все это была базовая конфигурация.

Как будет выглядеть базовая конфигурация с Hibernate

                        
Provider name
org.hibernate.ejb.HibernatePersistence

Provider properties
<property name="hibernate.connection.driver_class" 
value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.url" 
value="jdbc:hsqldb:mem:db"/>
<property name="hibernate.connection.username" 
value="sa"/>
<property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" 
value="create"/>
		

Последний параметр create. Это значит, что когда hibernate полностью считает всю конфигурацию (все ваши классы и аннотации), он сам создаст таблицы и связи между ними, а также поля. Если поставить параметр never, то hibernate будет стараться текущую конфигурацию JPA наложить на существующую базу данных.