hibernte (a) introdução do

Hibernação (a)

     O que é Hibernate?

       Hibernate framework de mapeamento objeto-relacional é uma fonte aberta, que tinha um pacote muito leve objeto JDBC, ele irá relação de mapeamento POJO com uma tabela de banco de dados, é um totalmente automatizado quadro ORM , hibernate pode gerar automaticamente instruções SQL, automaticamente, de modo que o programador Java pode usar arbitrária pensamento objeto de programação para manipular o banco de dados.

Entendemos a partir de três perspectivas sobre Hibernate:

       Um, hibernação mais encapsulamento de JDBC

   Quando não utilizar a Hiberante originais fazer persistência desenvolvimento da camada, há um monte de redundância, tais como: vários declaração JDBC, gerenciamento de conexão, portanto, o Hibernate JDBC encapsula o momento, não temos dados operacionais,-lo diretamente irá operar a linha.

       Em segundo lugar, novamente a partir do ponto hierárquica de vista

   Sabemos arquitectura muito típica de três camadas: camada de apresentação, camada de negócios, bem como a camada de persistência. Hiberante também o enquadramento camada de persistência, mas há um monte de quadro camada de persistência, tais como: ibatis, Nhibernate, JDO, OJB, EJB, e assim por diante.

       Três, hibernação é um ORM fonte aberto (mapeamento objeto-relacional) quadro.

    ORM, ou seja mapeamento objeto-relacional, o seu papel está entre as bases de dados relacionais e objecto feito um mapa. Mapeamento do objecto (Objecto) a relação (relação), e, em seguida, mapeados para o objecto a partir da relação. Desta forma, quando operar o banco de dados, você não precisa ir e lidar com SQL complexa, desde que a operação do objeto como ele pode operar-se (o campo é mapeado para um atributos de banco de dados relacionais de um objeto na memória). .

     O ORM ( objecto relacional o mapeamento ) Quadro metadados entre uma base de dados relacional e um mapa feito objectos. Metadados geralmente usam XML formato, e armazenado em um arquivo de mapeamento objeto dedicado.

       O ORM ( objecto relacional o mapeamento ) moldura : a hibernação (a Nhibernate) , o iBATIS , MyBatis , o EclipseLink , JFinal . Hibernate é um uso típico xml framework de mapeamento de arquivo descrito como objetos físicos ,

       Metadados : dados que descrevem outros dados ( dados sobre outros dados ), ou estrutura de dados (para informações sobre um recurso de dados estruturados ).

Recursos da linguagem

       Operação do conversor irá operar na base de dados para objetos Java para simplificar o desenvolvimento. Ao modificar um atributo de "persistência" de um objecto para modificar os registos de dados na tabela de base de dados correspondente.

       Fios e processos para se obter dois níveis de cache para melhorar o desempenho da aplicação.

       Há uma grande variedade de maneiras de converter as relações de mapeamento entre objetos Java para o relacionamento entre as tabelas de banco de dados.

       Proteger diferenças entre diferentes implementações de banco de dados. Hibernate só precisa especificar o atualmente usado pelo banco de dados na forma de "línguas", pode gerar instruções SQL para a situação real do banco de dados subjacente.

       Não-invasiva: classes persistentes Hibernate não são necessários para implementar qualquer interface ou herdar qualquer classe, POJO pode.

       // lê o arquivo de configuração

                    Configuração conf = nova configuração () configure (.);

                    // criar a configuração de fábrica

                    SessionFactory SessionFactory = conf.buildSessionFactory ();

                    // obter a operação de banco de dados de sessão objetos

                    Session session = sessionFactory.openSession ();

                                

       Ele pode ser visto na Figura, o Hibernate a API um total de 6. , Respectivamente, para : a Sessão , a SessionFactory , a Transação , consulta , Critérios e Configuração .

configuração de classe

Configuração categorias: usado para carregar o arquivo de configuração padrão (o caminho do arquivo as hibernate.properties ).

              Chamada para configure () método irá carregar o caminho do arquivo padrão XML formato de arquivo de configuração (hibernate.cfg.xml) é recomendado.

Se o perfil não padrão caminho do arquivo ou o nome do perfil não cumpra a regra padrão pode ser usado

    nova configuração (). configure (arquivo  ) para carregar o arquivo especificado

    nova configuração (). configure (caminho  ) para carregar arquivos no caminho especificado

    Se propriedades formato de arquivo de configuração, podem ser utilizados . AddClass ( nome da classe entidade .class) método pode carregar arquivos de mapas.          

 

SessionFactory objetos

SessionFactory objetos :

    SessionFactory em nome de fonte de armazenamento de dados. De acordo com Hibernate criar o banco de dados correspondente ao perfil de loja de fonte.

    SessionFactory Depois que o objeto é criado, e Configuração não objetos associados. Modificar configuração de arquivo de configuração contém informações, não SessionFactory ter qualquer impacto.  

    Obter SessionFactory objetos:

Configuração new () configure () buildSessionFactory ()..;

     objeto de cache é grande, ele é chamado de objeto pesado. SessionFactory armazenados para Hibernate informações de configuração, mapeando informações de metadados. objeto Heavyweight.

 

sessão objeto

Sessão objetos:  

    A sessão em nome do programa eo banco de dados. Sessão fornece um método de operar as várias bases de dados. É objetos leves.

Obtém Sessão Objeto

    factory.openSession (): obter uma nova sessão instância.

factory.getCurrentSession (): esse método cria a sessão irá remover o segmento atual sessão , usando o subjacente ThreadLocal acesso  

save () método : o Java objeto é salvo no banco de dados.

ts transacção = session.beginTransaction ();

Usuário u = new User ();

u.setName ( "赵 六")

u.setPassword ( "123456")

// salva o objeto para o banco de dados                                  

Session.save (u);                               

ts.commit ();

update () método: actualizar a abordagem de banco de dados

ts transacção = session.beginTransaction ();

 // primeiro encontrar o objeto que você deseja modificar, de acordo com os valores de chave primária                                      

usuário = session.get (User.class, 1);                                  

user.setName ( "jery");                                  

 // objeto para atualizar o banco de dados, de acordo com OID                                  

Session.update (utilizador);                                     

ts.commit ();

delete () método: método Delete

De acordo com o subjacente OID ser excluído. Há duas maneiras

( 1 )                                       

Transaction ts=session.beginTransaction();                                     

User user=session.get(User.class, 1);                                        

//删除指定对象                                       

session.delete(user);                                        

ts.commit();

2                                                                          

Transaction ts=session.beginTransaction();

User user=new User();                                       

user.setId(2);                                                                              

 session.delete(user);                                       

ts.commit();    

load()get()方法:从数据库查找指定对象

session.get(实体类名.class,OID);

session.load(实体类名.class,OID);

 

load()get()的区别:

                                                                                                                                                          我们使用get查询时发现控制台会立马打出查询语句。

使用load查询时控制台不会打印查询语句。

get方法被调用时立刻发送sql语句到数据库进行查询。

load方法被调用时并没有查询数据库,当我们需要使用查询的对象时,才去查询,所以当我们打印对象时,才会在控制台打印sql语句。

get()的原理

    程序调用get方法,Hibernate发送sql语句到数据库

数据库返回结果,Hibernate将结果封装成对象,返回对象到程序。

load()的原理

    程序调用load方法,Hibernate使用代理技术,创建一个代理对象,属性只有ID值。

    然后返回代理对象给程序,我们使用对象时,代理对象调用Hibernate查询数据库,初始化其他属性。

    load方法,返回一个代理对象,获取其属性时,会查询数据库,每次访问属性都会查询数据库么?

    答:不是。代理对象中有一个标识是否被初始化的boolean类型变量,记录是否被初始化。

查询所有对象的方法

    使用HQL语言(后面会详细介绍),HQL语言是面向对象的

     Query query=session.createQuery("from User");

      第二种方式

      Criteria c=session.createCriteria(User.class);

      List<User> l=c.list();

      第三种方式,使用原生sql语句进行查询

      SQLQuery query=session.createSQLQuery("select * from user");

      List l=query.list();

Transaction对象

    封装了事务的操作。我们做增删改查等操作时,必须开启事务.

    因为session是线程不安全的,这样主要是为了线程安全。保证数据的正确性。

    开启事务: Transaction ts=session.beginTransaction();

    提交事务:ts.commit();

    回滚事务:ts.rollback();

    当通过getCurrentSession获取当前线程绑定的Session时,事务关闭时,会自动把Session关闭并删除。

Query对象

     封装HQL语句的对象。

     返回一个对象的方法 query.uniqueResult();

     分页相关

     query.setFirstResult(index):从第几个取

     query.setMaxResults(count):指定取几行记录

https://blog.csdn.net/Vpn_zc/article/details/82784003(hibernate缓存)

综合自:https://blog.csdn.net/c99463904/article/details/72794787

         https://blog.csdn.net/jiuqiyuliang/article/details/39078749

发布了14 篇原创文章 · 获赞 1 · 访问量 5530

Acho que você gosta

Origin blog.csdn.net/Vpn_zc/article/details/82783888
Recomendado
Clasificación