18 Haziran 2018 Pazartesi

StandardServiceRegistryBuilder Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
Hibernate 5 ile iki tane ServiceRegistry nesnesi geliyor. Bunlar şöyle
- org.hibernate.boot.registry.BootstrapServiceRegistry
- org.hibernate.boot.registry.StandardServiceRegistry

Bu sınıf StandardServiceRegistry nesnesi oluşturur.

Hibernate 4 ile bu sınıf yerine ServiceRegistryBuilder kullanılıyordu.

Kullanım
Bu nesne de SessionFactory oluşturmak için kullanılır. Şöyle yaparız. Configuration nesnesi içinde bir MetaDataSources nesnesi yaratılır. Bu nesneden MetaDataBuilder elde edilir. MetaDataBuilder nesnesinden MetaData nesnesi elde edilir ve nihayet SessionFactory nesnesi elde edilir.
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration();
configuration.configure("/hibernate.cfg.xml");

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
  .applySettings(configuration.getProperties())
  .build();

sessionFactory = configuration.buildSessionFactory(serviceRegistry);

applySettings metodu - Map
Belirtilen Map içindeki parametreleri alır. java.util.Properties Map arayüzünü gerçekleştirdiği için bu metod ile kullanılabilir.
Örnek
Şöyle yaparız.
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");


ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
  .applySettings(configuration.getProperties()).build();

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);


servletContextEvent.getServletContext().setAttribute("SessionFactory", sessionFactory);
Örnek
Şöyle yaparız.
Configuration configuration = new Configuration();

configuration.addAnnotatedClass (org.gradle.Person.class);
configuration.setProperty("connection.driver_class","com.mysql.jdbc.Driver");
configuration.setProperty("hibernate.connection.url",
  "jdbc:mysql://localhost:3306/hibernate");                                
configuration.setProperty("hibernate.connection.username", "root");     
configuration.setProperty("hibernate.connection.password", "root");
configuration.setProperty("dialect", "org.hibernate.dialect.MySQLDialect");
configuration.setProperty("hibernate.hbm2ddl.auto", "update");
configuration.setProperty("show_sql", "true");
configuration.setProperty(" hibernate.connection.pool_size", "10");

StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
  .applySettings(configuration.getProperties());
applySettings metodu - DataSource
Normalde Hibernate DataSource'ları kendi yaratır. Dışarıdan vermek için şöyle yaparız.
//retrieve your DataSource
DataSource dataSource = ...;
Configuration configuration = new Configuration()
    .configure();
//create the SessionFactory from configuration
SessionFactory sf = configuration
    .buildSessionFactory(
        new StandardServiceRegistryBuilder()
            .applySettings(configuration.getProperties())
            //here you apply the custom dataSource
            .applySetting(Environment.DATASOURCE, dataSource)
            .build());
build metodu
Şöyle yaparız.
static SessionFactory sessionFactory = null;


Configuration cfg = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
  .applySettings(cfg.getProperties());

sessionFactory = cfg.buildSessionFactory(builder.build());
configure metodu
Belirtilen dosyayı okur. Şöyle yaparız.
Map<String,String> jdbcUrlSettings = new HashMap<>();
String jdbcDbUrl = System.getenv("JDBC_DATABASE_URL");
if (null != jdbcDbUrl) {
  jdbcUrlSettings.put("hibernate.connection.url", System.getenv("JDBC_DATABASE_URL"));
}

registry = new StandardServiceRegistryBuilder().
    configure("hibernate.cfg.xml").
    applySettings(jdbcUrlSettings).
    build();

Hiç yorum yok:

Yorum Gönder