Archív

Archive for the ‘JPA 2’ Category

Začínáme s JPA 2

2012-11-06 Komentáře vypnuty
  • JPA je pouze standart
  • referenční implementace: EclipseLink
  • další implementací je např. Hibernate
  1. Přidej IDEA > Tools > Data Sources
  2. Vytvoř na serveru připojení k databázi DataSource 
  3. Uprav Maven script pom.xml
    
            <!-- JPA -->
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>eclipselink</artifactId>
                <version>${eclipselink.version}</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- EclipseLink, http://wiki.eclipse.org/EclipseLink/Maven -->
            <repository>
                <id>EclipseLink</id>
                <url>http://download.eclipse.org/rt/eclipselink/maven.repo</url>
            </repository>
    
  4. Vytvoř POJO třídu (respektive Entitu) Employee.java včetně SET a GET metod
    public class Employee {
    
        private int id;
        private String firstName;
        private String lastName;
    
    
  5. Vytvoř mapovací soubor employee.xml. Pro přehlednost vytvoř stejnou strukturu balíčků ve složce resources jakou máš ve java. Případně použij místo anotace místo xml konfigurace (odstavec na konci).
    <?xml version="1.0" encoding="UTF-8"?>
    <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     version="2.0">
    
        <description>The minimal mappings for a persistent entity in XML.</description>
    
        <entity name="Employee" class="com.unfuddle.kamiluv.hr.Employee" access="FIELD">
    
            <!-- Table name -->
            <table name="EMPLOYEES"/>
    
            <!-- Queries -->
            <named-query name="findAllEmployees">
                <query>SELECT e FROM Employee e</query>
            </named-query>
    
            <!-- Attributes -->
            <attributes>
                <id name="id">
                    <column name="EMPLOYEE_ID"/>
                </id>
                <basic name="firstName">
                    <column name="FIRST_NAME"/>
                </basic>
                <basic name="lastName">
                    <column name="LAST_NAME"/>
                </basic>
            </attributes>
    
        </entity>
    
    </entity-mappings>
    
    
  6. Vytvoř src\main\resources\META-INF\persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence 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_2_0.xsd"
                 version="2.0">
    
        <persistence-unit name="WebAppPersistenceUnit" transaction-type="JTA">
            <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
            <jta-data-source>jdbc/hr_datasource</jta-data-source>
            <mapping-file>com/wordpress/kamiluv/hr/employee.xml</mapping-file>
            <class>com.wordpress.kamiluv.hr.Employee</class>
    
            <properties>
                <property name="eclipselink.logging.level" value="INFO"/>
            </properties>
    
        </persistence-unit>
    </persistence>
    
    
    • jta-data-source odkazuje na DataSource na serveru (krok 2)
    • pokud je vše v pořádku a IntelliJ IDEA rozpozná JPA configuraci, přidá ikonky pro rychlé přecházení do POJO třídy…

  7. Vytvoř třídu EmployeeDAO
    public class EmployeeDAO {
    
        @PersistenceContext(unitName = "WebAppPersistenceUnit")
        private EntityManager em;
    
        public List<Employee> findAllEmployees() {
            TypedQuery<Employee> query = em.createNamedQuery("findAllEmployees", Employee.class);
            return query.getResultList();
        }
    }
    

Pokud dáváš přednost anotacím před xml konfigurací (bohužel se mi nepodařilo zprovoznit oboji najednou):

  • odstraň tag mapping-file z persistence.xml
  • odstraň konfigurační soubor employee.xml
  • přidej anotace do POJO třídy
    @Entity
    @NamedQuery(name = "findAllEmployees", query = "SELECT e FROM Employee e")
    @Table(name = "EMPLOYEES")
    public class Employee {
    
        @Id
        @Column(name = "EMPLOYEE_ID")
        private int id;
        @Column(name = "FIRST_NAME")
        private String firstName;
        @Column(name = "LAST_NAME")
        private String lastName;
    
        // getters & setters
    }
    
Reklamy

Jak importovat DataSource do GlassFish serveru

2012-11-06 Komentáře vypnuty
  • Data sources a connection pools můžeme nastavit ručně přímo ve webovém rozhraní GlassFish serveru – v Admin consoli, nebo použít script s konfigurací:
  1. Stáhni Oracle JDBC driver ojdbc6.jar a ulož jej do %GLASSFISH_HOME%\glassfish\domains\DEV\lib\ext\
  2. Zkopíruj si template %GLASSFISH_HOME%\glassfish\lib\install\templates\ resources\jdbc\oracle_type4_datasource.xml do pracovního adresáře.
  3. Přejmenuj na datasources_HR.xml a uprav:
    <resources>
        <!-- HR -->
        <jdbc-connection-pool
            name="hr_pool"
            datasource-classname="oracle.jdbc.pool.OracleDataSource"
            res-type="javax.sql.DataSource">
            <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE"/>
            <property name="user" value="HR"/>
            <property name="password" value="hr"/>
        </jdbc-connection-pool>
    
        <jdbc-resource
            enabled="true"
            jndi-name="jdbc/hr_datasource"
            object-type="user"
            pool-name="hr_pool"
        />
    </resources>
    
  4. Vytvoř soubor s heslem pwd.txt:
    AS_ADMIN_PASSWORD=admin
    
  5. Vytvoř .bat script pro import:
    set GLASSFISH_HOME=c:\java\server\glassfish3
    start %GLASSFISH_HOME%\bin\asadmin --user admin --passwordfile pwd.txt --port 9000 add-resources datasources_HR.xml
    
  6. Funkčnost databázového spojení si můžeš ověřit přímo v Admin consoli nebo pomocí .bat scriptu:
    set GLASSFISH_HOME=c:\java\server\glassfish3
    start %GLASSFISH_HOME%\bin\asadmin --user admin --passwordfile pwd.txt --port 9000 ping-connection-pool hr_pool