Internetteknologi (ITNET1)

Download Report

Transcript Internetteknologi (ITNET1)

Objektorienteret netværkskommuniation(ITONK1)

Persistence

Goal with todays lesson

• After these 2x35 minutes you will be: – Comfortable with the expression “persistence”, and how it relates to Distributed Systems – Knowledgeable about different strategies for obtaining persistence for Distributed Systems – Ready to explore the subject further – You will not: • Be an expert on persistence, as this is a huge area in itself

Ingeniørhøjskolen i Århus

Slide 2

Outline

• Plenum – experience with persistent datastorage • Continuing exercise • Principles of Persistence • Datastore Technology for Persistence – Files – Relational Databases • Examplified OR-mapping with EJB – Object Databases

Ingeniørhøjskolen i Århus

Slide 3

Experience with Persistent datastorage

• To establish a picture of your knowledge – Which types of persistent datastorage do you know?

– What experience do you have in using it with (oo) programming languages?

– What problems did you face – and how did you solve them?

Slide 4

Ingeniørhøjskolen i Århus

Exercise: comparing strategies for persistence

• This will be a continuing discussion • Select one or more entity classes from your own required assignment 1 an discuss how to solve the persistent requirements of the assignment using: – File persistence – Relational Database Management System (toolkit or emb. JDBC) – Object database system (ODBMS, e.g. JDO) • Using information obtained from the examples from ONK-2 and the following slides • Feel free to use the classroom PC for searching for more information • We will stop after each section (files, RDBMS, ODBMS), and allow for 5 min. group work • We will end with a follow-up discussion

Ingeniørhøjskolen i Århus

Slide 5

Principles of Persistence

What is Persistence – a definition

• Persistence is the ability of an object to survive the lifetime of the process in which it resides.

• Persistence is relevant for stateful • What is State ?

– State = object instance attributes – Not methods server objects.

– private & public • We remember the activation/deactivation discussion?

– The state needs to be retained between object deactivation and object activation – Why?

Ingeniørhøjskolen i Århus

Slide 7

How to achieve Persistence?

• Storing object state deactivation on persistent datastore before • Upon activation , load object state datastore – E.g. RMI activation from persistent • Persistent storage can be obtained by ?

File system

• embedded systems on disk-storage, Flash-RAM and others –

Relational Database

• All from embedded, to desktop and enterprise servers (most widely used is SQL servers) –

Object-Database

• Has been emerging technology for years, but no widespread support yet. JDO for Java is a promising technology however – Others?

Ingeniørhøjskolen i Århus

Slide 8

Datastore Technology for Persistence

Datastore Technology

• Persistence can be implemented using • Files – CORBA Externalization – C#/Java type File Serialization – Structured Storage in COM • Relational Databases – Object Relational Mapping • “Homegrown”, CMP, JDO, Hibernate, Torque, LLBLGen Pro – JDBC/ODBC • Oracle, IBM DB2, Microsoft SQL Server & Access, MySQL • Object Databases – http://www.odmg.org/ , Versant, JDO

Ingeniørhøjskolen i Århus

Slide 10

Problems with File-based Persistence

• Mapping to Files can be inefficient for large composite objects • File systems only have crude support for concurrency control • File systems lack support for fault-tolerance (transactions) • Application specific code needed for every persistent class

Ingeniørhøjskolen i Århus

Slide 11

Continuing exercise part 1 – file-based

• Select one or more entity classes from your own required assignment 1 an discuss how to solve the persistent requirements of the assignment using: – File persistence – Pro’s and Con’s – How to implement?

Slide 12

Ingeniørhøjskolen i Århus

Relational Database

• Relational Database Management Systems (RDBMSs) Examples: – Ingres – Oracle – Sybase – DB2 – Microsoft SQL Server – Microsoft Access – MySQL – PostGree DB

Ingeniørhøjskolen i Århus

Slide 13

Mapping to RDBMS’s

• Relational database schemas consist of sets of tables • Types of mapping: – Define a table for each type – Complex mapping • In each table create – primary key for object identifier – a column for each attribute of the object • mapping of middleware atomic types to primitive types supported by RDBMS • secondary keys for object references • Resolve inheritance statically – This and other problems -> • Objects and RDBMS does not map perfectly: – the OR impedance mismatch

Ingeniørhøjskolen i Århus

Slide 14

Embedding Queries into Programs

• Embedded SQL – Macros to embed queries into programs – RDBMS provides processor to expand macros – API to traverse queries – Not standardized • Open Database Connectivity (Microsoft) – Standardized API for RDBMS Access available on all Microsoft Platforms • Java Database Connectivity (Sun) – Standardized RDBMS Access from Java

Ingeniørhøjskolen i Århus

Slide 15

Issues with mapping

• Does this mean that we should figure out for ourselfes how to obtain the OR-mapping?

– No – Frameworks available – CORBA PSS, COM persistence, EJB for Java, CCM, Hibernate, others – JDBC is at a low level – Hibernate project freeware

Ingeniørhøjskolen i Århus

Slide 16

RDBMS mapping illustrated with EJB’s

Enterprise JavaBeans (EJB’s)

• Standard server-side component model for Java Enterprise Applications – security – resource pooling – persistence – concurrency – transactional integrity • Has nothing to do with “JavaBeans” – JavaBeans designed for intra-process purposes • GUIs, non-visual widgets, entity representations – Enterprise Java Beans (EJB) designed for inter-process purposes

Ingeniørhøjskolen i Århus

Slide 18

EJB’s (cont.)

• Restricted to Java (only implementation language) – platform independence – “write once, run anywhere” • EJB components – platform/implementation independence – write once, run in any Application Server complying with the EJB spec • J2EE reference implementation • Oracle’s Application Server (OAS) • IBM’s Websphere • BEA’s Weblogic Server and Weblogic Enterprise • Sybase’s EAServer • Open Source – JBoss (see links) Slide 19

Ingeniørhøjskolen i Århus

Bean Usage

• •

Entity beans

Maps to domain model (Entity classes) – model state maintained across all client interactions – represent a row of data in a database

Session beans

Maps to Use Case model (Control classes) – model business process being performed by a single client involving one or more entity beans – it extends the actions of the client into the server • simplifies the actions programmed by the client • limits the number of distributed calls required between the client and the entity beans • limits the number of stubs that have to be loaded by the client – are not persisted to a database

Ingeniørhøjskolen i Århus

Slide 20

Entity Bean Types

• Bean can have total control over loading and storing from database – Bean Managed Persistence (BMP) • Container can take over this responsibility – Container Managed Persistence (CMP) • Still need to define an OR mapping in admin tool • This is the same in CORBA CCM / PSS – Specialized Implementations • Legacy applications such as CICS • When to choose what?

– Well – start out with CMP if possible, and then migrate code as performance issues pops up during testing

Ingeniørhøjskolen i Århus

Slide 21

Bean Managed Persistence

• Have to handle all database interaction – except distributed transactions • ejbLoad() and ejbStore() called when bean instance state must be synchronized with database • ejbActivate() and ejbPassivate() called when bean is moved between the ready state and pooled state

Ingeniørhøjskolen i Århus

Slide 22

Implement a BMP Entity Bean

package java.examples.ejb.entity.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; … public class BookBMP extends BookEJB { private DataSource dataSource_; … private EntityContext ctx_; Additional setup of database connections needed – some are done in the configuration tool

Important features: Entity beans always implement the following event handles:

•ejbCreate: insert •ejbRemove: delete •ejbLoad: select •ejbStore: update •ejbFindByPrimaryKey: select •And more can be implemented: •ejbFindBooksByAuthor: select Slide 23

Ingeniørhøjskolen i Århus

Implement DB Insertion

} public String ejbCreate(String id, String title, String author, String topic) {

super.ejbCreate(id, title, author, topic);

Connection conn = null; PreparedStatement pstatement = null; try { conn = dataSource_.getConnection(); pstatement=conn.prepareStatement("insert into Book (id, title, author, topic)"+ ” values (

?, ?, ?, ?

)"); pstatement.setString(1,id_); pstatement.setString(2,title_); pstatement.setString(3,author_); pstatement.setString(4,topic_); pstatement.execute(); return id_; } catch(SQLException ex) { throw new EJBException(ex); } finally { … } BookBMP OR-mapping id 42123 43423 … title EJB EJB2 … author SW SW … topic EJB EJB …

Ingeniørhøjskolen i Århus

Slide 24

Implement DB Load

public void ejbLoad() { Connection conn = null; PreparedStatement pstatement = null; ResultSet rs = null; try { conn = dataSource_.getConnection(); pstatement = conn.prepareStatement( "select id, title, author, topic from Book " + "where id = ?"); pstatement.setString(1, (String)ctx_.getPrimaryKey()); rs = pstatement.executeQuery(); if (rs.next()) { if (rs.next()) { id_ = rs.getString("id"); title_ = rs.getString("title"); author_ = rs.getString("author"); topic_ = rs.getString("topic");

super.ejbLoad();

} else { throw new EJBException("unable to locate row"); } } catch(SQLException ex) { throw new EJBException(getText(ex)); } finally { … } … Slide 25

Ingeniørhøjskolen i Århus

Implement DB Store

} public void ejbStore() { Connection conn = null; PreparedStatement pstatement = null; try {

super.ejbStore();

conn = dataSource_.getConnection(); pstatement = conn.prepareStatement( "update Book set title=?, author=?, topic=? " + "where id = ?"); pstatement.setString(1,title_); pstatement.setString(2,author_); pstatement.setString(3,topic_); pstatement.setString(4,id_); pstatement.executeUpdate(); } catch(SQLException ex) { throw new EJBException(getText(ex)); } finally { … } Slide 26

Ingeniørhøjskolen i Århus

Implement DB Remove

} public void ejbRemove() { Connection conn = null; PreparedStatement pstatement = null; try {

super.ejbRemove();

conn = dataSource_.getConnection(); pstatement = conn.prepareStatement("delete from Book " + "where id = ?"); pstatement.setString(1, (String)ctx_.getPrimaryKey()); pstatement.executeUpdate(); } catch(SQLException ex) { throw new EJBException(getText(ex)); } finally { … } Slide 27

Ingeniørhøjskolen i Århus

Implement Finders

} public

String

ejbFindByPrimaryKey(String pk) throws FinderException { Connection conn = null; PreparedStatement pstatement = null; ResultSet rs = null; try { conn = dataSource_.getConnection(); pstatement = conn.prepareStatement("select id from Book " + "where id = ?"); pstatement.setString(1, pk); rs = pstatement.executeQuery(); if (rs.next()) {

return rs.getString("id");

} else { throw new ObjectNotFoundException(pk + " no found"); } } catch(SQLException ex) { throw new EJBException(getText(ex)); } finally {... } Slide 28

Ingeniørhøjskolen i Århus

Implement Finders (cont.)

} public

Collection

ejbFindAll() throws FinderException { Connection conn = null; PreparedStatement pstatement = null; ResultSet rs = null; try { Vector pKeys = new Vector(); conn = dataSource_.getConnection(); pstatement = conn.prepareStatement("select id from Book "); rs = pstatement.executeQuery();

while (rs.next()) { pKeys.add(rs.getString("id")); }

return pKeys; } catch(SQLException ex) {throw new EJBException(getText(ex)); } finally {... }

Ingeniørhøjskolen i Århus

Slide 29

Continuing exercise part 2 – RDBMS based

• Select one or more entity classes from your own required assignment 1 an discuss how to solve the persistent requirements of the assignment using: – RDBMS • Embedded SQL • If you have experience using toolkits, be free to elaborate on this – Pro’s and Con’s – How to implement – Compared to using file externalization

Ingeniørhøjskolen i Århus

Slide 30

Principles of Persistence continued ODBMS

ODBMS

• ODBMSs have been standardized by the Object Database Management Group – Schema definition language (ODL) – subset of CORBA IDL – Programming language bindings to • C++ • Java • And many others – Object Query Language (OQL) – JDO has replaced the Java binding • Support persistence of OO programming language objects

Ingeniørhøjskolen i Århus

Slide 32

JDO: POJO’s Slide 33

Ingeniørhøjskolen i Århus

Continuing exercise part 3 – ODBMS based

• Select one or more entity classes from your own required assignment 1 an discuss how to solve the persistent requirements of the assignment using: – ODBMS • Use the JDO example from ONK-2 – Pro’s and Con’s – How to implement?

– Compared to using RDBMS and file externalization

Ingeniørhøjskolen i Århus

Slide 34

Comparison

• File externalization / serialization is not transparent for implementors of server objects • Persistence in RDBMS’s is – complicated by OR-impedance mismatch – simplified by wide availability of RDBMS’s – Well-known tested technology • Persistence in ODBMS’s is – simplified by conceptual similarities of • object models • programming language bindings – No widespread support – (personal view) I would not risk high-performance system on this

Ingeniørhøjskolen i Århus

Slide 35