Archive

Archive for the ‘Maven’ Category

Začínáme s JSF & PrimeFaces

2012-11-12 Komentáře vypnuty
  • JavaServer Faces (JSF) is a Java-based web application framework intended to simplify development integration of web-based user interfaces
  • PrimeFaces is today most used JSF component library
  1. Přidej JSF a PrimeFaces do Maven scriptu pom.xml
            <!-- JSF 2.1 -->
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>javax.faces-api</artifactId>
                <version>2.1</version>
                <scope>provided</scope>
            </dependency>
            <!-- PrimeFaces -->
            <dependency>
                <groupId>org.primefaces</groupId>
                <artifactId>primefaces</artifactId>
                <version>3.3.1</version>
            </dependency>
    
            <!-- GlassFish repository (contains JSF) -->
            <repository>
                <id>GlassFish</id>
                <url>http://download.java.net/maven/glassfish</url>
            </repository>
            <!-- PrimeFaces repository -->
            <repository>
                <id>prime-repo</id>
                <name>Prime Repo</name>
                <url>http://repository.primefaces.org</url>
            </repository>
    
    
  2. Vytvoř POJO třídu Employee.java s getry a setry
    public class Employee {
        private int id;
        private String firstName;
        private String lastName;
    
  3. Vytvoř controller s privátní proměnnou a metodou, která ji naplní daty
    @ManagedBean
    @ViewScoped
    public class EmployeeController {
        private List<Employee> employeeList = new ArrayList<>();
    
        public void showAllEmployees() {
            Employee employee1 = new Employee();
            employee1.setId(1);
            employee1.setFirstName("John");
            employee1.setLastName("Black");
    
            Employee employee2 = new Employee();
            employee2.setId(1);
            employee2.setFirstName("Michael");
            employee2.setLastName("Knight");
    
            employeeList.add(employee1);
            employeeList.add(employee2);
        }
    
  4. Vytvoř stránku index.xhtml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html
            PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:p="http://primefaces.org/ui">
    
    <h:head>
        <title>Create a new employee</title>
    </h:head>
    
    <h:body>
    
        <h:form>
            <p:dataTable var="employee" value="#{employeeController.employeeList}">
                <p:column headerText="ID">
                    <h:outputText value="#{employee.id}"/>
                </p:column>
    
                <p:column headerText="First name">
                    <h:outputText value="#{employee.firstName}"/>
                </p:column>
    
                <p:column headerText="Last name">
                    <h:outputText value="#{employee.lastName}"/>
                </p:column>
            </p:dataTable>
        </h:form>
    
        <h:form>
            <h:commandButton value="Show All Employees" type="submit" action="#{employeeController.showAllEmployees}"/>
        </h:form>
    
    </h:body>
    </html>
    
    • komponenta p:dataTable je použita z PrimeFaces
    • stisknutím tlačítka dojde k vyvolání akce showAllEmployees, respektive metody showAllEmployees()
  5. Zadej URL http://127.0.0.1:9090/hr-0.1-SNAPSHOT/index.faces

Rubriky:Java, JSF 2, Maven

Začínáme s EJB 3.1

2012-11-07 Komentáře vypnuty
  • Přidej EJB do Maven scriptu pom.xml
    <!-- EJB -->
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.ejb</artifactId>
        <version>3.1</version>
        <scope>provided</scope>
    </dependency>
    
    <!-- Java.net GlassFish repository (contains EJB) -->
    <repository>
        <id>glassfish</id>
        <name>Glassfish Repository</name>
        <url>http://download.java.net/maven/glassfish</url>
    </repository>
    
  • Přidej některou z EJB anotací (např. @Stateless) do existující třídy
    @Stateless
    public class EmployeeDao {
    
        @PersistenceContext(unitName = "WebAppPersistenceUnit")
        private EntityManager em;
    
        public Employee findEmployeeById(int id) {
            Employee employee = em.find(Employee.class, id);
            return employee;
        }
    }
    
  • Nyní můžeš vytváření objektů delegovat na Dependency Injection
        // vytvoření instance pomocí konstruktoru
        private EmployeeDao employeeDao = new EmployeeDao();
        // použití DI
        @EJB
        private EmployeeDao employeeDao;
    
Rubriky:EJB 3.1, Java, Maven

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
    }
    

Nastavení a struktura Maven projektu

2012-03-14 Komentáře vypnuty

Stažení a nastavení Maven:

  • stáhni a rozbal Maven 2/3
  • nastav M2_HOME & Path v systému |Maven in 5 minutes|
  • v M2_HOME\conf\settings.xml nastav <localRepository>

Základní struktura Maven projektu může vypadat takto:

A tady je základní Maven konfigurák pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wordpress.kamiluv</groupId>
    <artifactId>web-app</artifactId>
    <version>0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>WebApp</name>
    <url>https://kamiluv.wordpress.com</url>
    <description>Some web application.</description>

    <properties>
    </properties>

    <build>
        <plugins>
            <!-- Set Java version, default is 1.3 -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
                <version>2.3.2</version>
            </plugin>
            <!-- Newer maven plugin for working with Java 7 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
            </plugin>
        </plugins>
    </build>

    <dependencies>
    </dependencies>

    <repositories>
    </repositories>

</project>

Na závěr nastavení Source a Test složek v IntelliJ Idea:

Folder setting in IntelliJ Idea

Rubriky:IntelliJ IDEA, Maven