View Full Version : سوال: transaction managment JPA
shahryary
شنبه 22 فروردین 1388, 15:08 عصر
سلام ، در مورد نحوه کنترل JAP transaction به صورت دستی میخواستم بدونم :
چطور میتونم transaction را به صورت دستی (commit , rollback ) انجام بدم
+ نمیخوام توسط Named Query موجود در Entity های ایجاد شده استفاده کنم
+ دیتابیس هم PostgreSQL هست .
+APP server : Glassfish
+ تشکر
javaphantom
شنبه 22 فروردین 1388, 20:59 عصر
سلام ، در مورد نحوه کنترل JAP transaction به صورت دستی میخواستم بدونم :
چطور میتونم transaction را به صورت دستی (commit , rollback ) انجام بدم
+ نمیخوام توسط Named Query موجود در Entity های ایجاد شده استفاده کنم
+ دیتابیس هم PostgreSQL هست .
+APP server : Glassfish
+ تشکر
آیا از ORM tools ی مثل Hibernate یا toplink استفاده می کنید؟
javaphantom
شنبه 22 فروردین 1388, 21:33 عصر
من یک مثال برات با hibernate زدم می تونی ببینی چه جوری از BMT استفاده کردم
package deleteme.myentity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
*
* @author root
*/
@Entity
@Table(name="PERSON",schema="test")
public class Person implements Serializable {
@Id
private int id;
@Column(name="NAME")
private String name;
@Column(name="FAMILY")
private String family;
public Person() {
}
public String getFamily() {
return family;
}
public void setFamily(String family) {
this.family = family;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package deleteme;
import deleteme.myentity.Person;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
*
* @author root
*/
public class Main {
private EntityManagerFactory emf;
private EntityManager em;
public Main() {
emf = Persistence.createEntityManagerFactory("mypersistunit");
em = emf.createEntityManager();
Person person = new Person();
try {
em.getTransaction().begin();
person.setId(1);
person.setName("babak");
person.setFamily("azarmi");
em.persist(person);
em.getTransaction().commit();
} catch (Exception ex) {
if (em.getTransaction().isActive()) {
em.getTransaction().rollback();
}
ex.printStackTrace();
} finally {
try {
em.close();
} catch(Exception ex) {
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Main();
}
}
یک فایل در فلدر META-INF درست کن با نام persistence.xml
<?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="mypersistunit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>deleteme.myentity.Person</class>
<properties>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.password" value="babak"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test"/>
</properties>
</persistence-unit>
</persistence>
shahryary
یک شنبه 23 فروردین 1388, 12:42 عصر
بله از Toplink استفاده میکنم
+ مرسی مثالتون به دردم خورد
البته شما از Hibernate استفاده کردین و البته برای سایر دوستان مینوسیم که تنظیمات فایل persistence.xml مطابق با toplink باید باشه .(اگر از netbeans برای این قسمت استفاده میکنین تمامی این تنظیمات رو براتون انجام میده ).
+ به نظر شما toplink گزینه مناسبتری نسبت به hibernate هست ؟ به نظر من hibernate فریم وورک سنگینی هستش نسبت به toplink . البته خود سان سیستم بیشتر ترجیح میده از toplink استفاده کنه اینو میشه تو وبلاگ های معروف این شرکت دید . !
javaphantom
یک شنبه 23 فروردین 1388, 13:38 عصر
بله از Toplink استفاده میکنم
+ مرسی مثالتون به دردم خورد
البته شما از Hibernate استفاده کردین و البته برای سایر دوستان مینوسیم که تنظیمات فایل persistence.xml مطابق با toplink باید باشه .(اگر از netbeans برای این قسمت استفاده میکنین تمامی این تنظیمات رو براتون انجام میده ).
+ به نظر شما toplink گزینه مناسبتری نسبت به hibernate هست ؟ به نظر من hibernate فریم وورک سنگینی هستش نسبت به toplink . البته خود سان سیستم بیشتر ترجیح میده از toplink استفاده کنه اینو میشه تو وبلاگ های معروف این شرکت دید . !
من توی یک پروژه که شش ماه پیش داشتیم سر LazyFetch و یک قسمت دیگه با toplink به bug بر خوردم.
نتیجه اینکه Hibernate بهتره
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.