2011-09-04 4 views
1

저는 JPA에 익숙합니다. GlassFish 3 및 Eclipse Java EE 웹 개발자가있는 JSF 2 프로젝트에서 사용하고 있습니다. 이러한 내 설정 및 내 데이터베이스에 유지하기 위해 노력하고있어 방법 :JPA가 데이터베이스에 삽입하지 마십시오. 이유가 무엇입니까?

의 persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.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_2_0.xsd"> 
    <persistence-unit name="SuaParte" transaction-type="RESOURCE_LOCAL"> 
     <class>com.suaparte.pojo.Area</class> 
      //other entities 

     <properties> 
      <property name="eclipselink.jdbc.batch-writing" value="JDBC"/> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://<hostname>:3306/sua_parte"/> 
      <property name="javax.persistence.jdbc.user" value=<username>/> 
      <property name="javax.persistence.jdbc.password" value=<password>/> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

내 엔티티 :

@Entity 
@Table(name="area") 
public class Area implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column(unique=true, nullable=false) 
    private byte id; 

    @Column(nullable=false, length=45) 
    private String area; 

    //bi-directional many-to-one association to Company 
    @OneToMany(mappedBy="areaBean") 
    private List<Company> companies; 

    //getters and setters  


} 

어떻게 내가 전화 했어 내 EntityManager를 사용하여 객체를 유지하려고 시도하십시오.

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("SuaParte"); 
    EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    Area area = new Area(); 
    area.setArea("test"); 

    entityManager.persist(area); 

} 

하지만 아무 것도 실행하지 않으면 내 데이터베이스에서 JPA는 내 테이블에 개체를 유지하지 않습니다, 내가 뭘 잘못하고있어? 아이디어가 있으십니까?

답변

3

너는 transaction handling이 부족하다.

entityManager.getTransaction().begin(); 
entityManager.persist(area); 
entityManager.getTransaction().commit(); 

난 당신이 JPA와 JSF 통합을 읽어 권장합니다, 당신이 돌봐 일부 유틸리티/필터/JSF 지원이있을 수 있습니다.

+0

감사합니다. dude =), 결국 작동합니다. –

+1

JSF로 구현하기를 마침내 EJB에서 처리하면 컨테이너가 트랜잭션을 처리합니다. – BalusC

관련 문제