جاوا و تکنولوژی های آن

java programming language

در این وبلاگ به بررسی نکات موجود در جاوا و تکنولوژی های آن می پردازیم

طبقه بندی موضوعی


در این بخش به استفاده از Hibernate 5 به عنوان Persistence Agent میپردازیم


فراهم کردن ابجکتی از SessionFactory بوسیله Hibernate Native API نیاز به کد نویسی چند خط دارد و وقت گیر نیز است ولی با تنظیماتی که ما اعمال میکنیم میتوان آنرا ایجاد کرد 



اضافه کردن کتابخانه های مورد نیاز :


<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.2.Final</version>
</dependency>


ماژول orm برای هماهنگ کردن Spring و Hibernate :


<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>5.1.6.RELEASE</version>
</dependency>


کتابخانه H2 که جنبه تست دارد :


<dependency>
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId>
    <version>1.4.197</version>
</dependency>


و در نهایت از Tomcat Connection Pool که بهتر با محصول هماهنگ میشود را استفاده میکنیم 


<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp</artifactId>
    <version>9.0.1</version>
</dependency>



ست کردن تنظیمات :


همانطور که قبلا اشاره کردیم Spring به ما کمک میکند که براحتی SessionFactory را ایجاد کنیم فقط کافی است تنظیماتی را اعمال کنیم و آنرا در قالب Bean دریافت کنیم :


تنظیمات بصورت کد جاوا :


تنظیمات Hibernate ورژن 5 از 4 کمی متفاوت است و ما از کلاس LocalSessionFactoryBean که در پکیج org.springframework.orm.hibernate5 قرار گرفته است استفاده خواهیم کرد در صورتی که در Hibernate 4 در پکیج org.springframework.orm.hibernate4 قرار دارد 


همانند Hibernate 4 ما باید تنظیمات اولیه و Bean هایی از LocalSessionFactoryBean, DataSource و PlatformTransactionManager در کلاس Configuration ایجاد کنیم  


@Configuration
@EnableTransactionManagement
public class HibernateConf {
 
    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan(
          {"com.baeldung.hibernate.bootstrap.model" });
        sessionFactory.setHibernateProperties(hibernateProperties());
 
        return sessionFactory;
    }
 
    @Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1");
        dataSource.setUsername("sa");
        dataSource.setPassword("sa");
 
        return dataSource;
    }
 
    @Bean
    public PlatformTransactionManager hibernateTransactionManager() {
        HibernateTransactionManager transactionManager
          = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());
        return transactionManager;
    }
 
    private final Properties hibernateProperties() {
        Properties hibernateProperties = new Properties();
        hibernateProperties.setProperty(
          "hibernate.hbm2ddl.auto", "create-drop");
        hibernateProperties.setProperty(
          "hibernate.dialect", "org.hibernate.dialect.H2Dialect");
 
        return hibernateProperties;
    }
}




روش ست کردن تنظیمات از طریق XML :


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="...">
 
    <bean id="sessionFactory"
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource"
          ref="dataSource"/>
        <property name="packagesToScan"
          value="com.baeldung.hibernate.bootstrap.model"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">
                    create-drop
                </prop>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.H2Dialect
                </prop>
            </props>
        </property>
    </bean>
 
    <bean id="dataSource"
      class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource">
        <property name="driverClassName" value="org.h2.Driver"/>
        <property name="url" value="jdbc:h2:mem:db;DB_CLOSE_DELAY=-1"/>
        <property name="username" value="sa"/>
        <property name="password" value="sa"/>
    </bean>
 
    <bean id="txManager"
      class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
</beans>


و بعد برای اعمال کردن آن تنظیمات در کلاس Configuration بدین صورت عمل میکنیم :


@Configuration
@EnableTransactionManagement
@ImportResource({"classpath:hibernate5Configuration.xml"})
public class HibernateXMLConf {
    //
}




استفاده از SessionFactory در قالب یک Bean :


public abstract class BarHibernateDAO {
 
    @Autowired
    private SessionFactory sessionFactory;
 
    // ...
}




چه دیتابیس هایی میتوانند با Hibernate کار کنند ؟


متاسفانه تمامی دیتابیس ها در Hibernate پشتیبانی نمیشوند و میتوان از طریق این لینک به لیست دیتابیس های پشتیبانی شده دسترسی پیدا کرد 










نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی