<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>entwicklungsgedanken &#187; Oracle Forms</title>
	<atom:link href="http://www.entwicklungsgedanken.de/tag/oracle-forms/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.entwicklungsgedanken.de</link>
	<description>Verschiedene Gedanken rund um die Softwareentwicklung</description>
	<lastBuildDate>Thu, 29 Jul 2010 11:09:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Oracle Forms &#124; Datenbl&#246;cke (Stored Procedure vs. Base Table (View))</title>
		<link>http://www.entwicklungsgedanken.de/2008/02/03/oracle-forms-datenblcke-stored-procedure-vs-base-table-view/</link>
		<comments>http://www.entwicklungsgedanken.de/2008/02/03/oracle-forms-datenblcke-stored-procedure-vs-base-table-view/#comments</comments>
		<pubDate>Sun, 03 Feb 2008 18:11:04 +0000</pubDate>
		<dc:creator>Sven Thämar</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Verschiedenes]]></category>
		<category><![CDATA[Base Table]]></category>
		<category><![CDATA[Oracle Forms]]></category>
		<category><![CDATA[Stored Procedure]]></category>

		<guid isPermaLink="false">http://www.entwicklungsgedanken.de/2008/02/03/oracle-forms-datenblcke-stored-procedure-vs-base-table-view/</guid>
		<description><![CDATA[Allgemein In Oracle-Forms hat man die M&#246;glichkeit, sich die Daten f&#252;r die Bildschirmmasken &#252;ber verschiedene Wege anzeigen zu lassen. Diese Wege sollen hier unter zwei Gesichtspunkten kurz erl&#228;utert und gegen&#252;bergestellt werden.&#160; Der erste Gesichtspunkt widmet sich der allgemeinen Unterst&#252;tzung des Programmierers durch Oracle-Forms. Der zweite Gesichtspunkt befasst sich mit dem Zusammenspiel von Oracle-Forms bez&#252;glich des [...]]]></description>
			<content:encoded><![CDATA[<h3>Allgemein</h3>
<p>In Oracle-Forms hat man die M&#246;glichkeit, sich die Daten f&#252;r die Bildschirmmasken &#252;ber verschiedene Wege anzeigen zu lassen. Diese Wege sollen hier unter zwei Gesichtspunkten kurz erl&#228;utert und gegen&#252;bergestellt werden.&#160; </p>
<p>Der erste Gesichtspunkt widmet sich der allgemeinen Unterst&#252;tzung des Programmierers durch Oracle-Forms. Der zweite Gesichtspunkt befasst sich mit dem Zusammenspiel von Oracle-Forms bez&#252;glich des Konzeptes des <b>Model-View-Controller</b> (MVC). Also mit der Trennung zwischen der Pr&#228;sentation, der Steuerung und der Haltung (inkl. Gesch&#228;ftslogik) der Daten.&#160;&#160; </p>
<h3>Allgemeinen Unterst&#252;tzung des Programmierers durch Oracle-Forms</h3>
<h6>1. Zugriff &#252;ber Tabellen</h6>
<p align="justify">Dies ist wohl der am Besten unterst&#252;tzte Zugriff auf die Daten. Oracle-Forms regelt alle Zugriffe, inkl. dem Sperren von Datens&#228;tzen, als auch die notwendigen Transaktionen im Hintergrund automatisch. Der Programmierer kann sich um das Wesentlich k&#252;mmern. </p>
<table cellspacing="0" cellpadding="2" width="595" border="1">
<tbody>
<tr>
<td valign="top" width="276">Vorteil</td>
<td valign="top" width="317">Nachteil</td>
</tr>
<tr>
<td valign="top" width="277">Automatische Regelung aller Transaktionen</td>
<td valign="top" width="316">erh&#246;hte Netzbelastung durch POST-QUERY Aktionen</td>
</tr>
<tr>
<td valign="top" width="278">Unterst&#252;tzung der RETURNING-Klausel</td>
<td valign="top" width="316">&#160;</td>
</tr>
<tr>
<td valign="top" width="278">Direkter Zugriff auf die Tabellen</td>
<td valign="top" width="316">&#160;</td>
</tr>
<tr>
<td valign="top" width="278">Automatische Steuerung bei Master-Detail-Beziehungen</td>
<td valign="top" width="316">&#160;</td>
</tr>
<tr>
<td valign="top" width="278">Zugriff bei der Suche auf alle Tabellen gebundenen Feldern</td>
<td valign="top" width="316">&#160;</td>
</tr>
<tr>
<td valign="top" width="278">&#160;</td>
<td valign="top" width="316">&#160;</td>
</tr>
</tbody>
</table>
<h6>2. Zugriff &#252;ber Views</h6>
<p>Dieser Zugriff ist, neben dem direkten Tabellenzugriff, der zweitbeste unterst&#252;tze Weg. Hierbei hat der Entwickler jedoch die M&#246;glichkeit mit INSTEAD-OF-Triggern die Daten auf Ebene der Datenbank weiter zu verarbeiten. Letztendlich wird der Zugriff &#252;ber Views genau so unterst&#252;tzt als wenn der Zugriff direkt auf der Tabelle erfolgt. Allerdings sperrt Forms das Bearbeiten von Daten wenn der View &#252;ber mehr als eine Tabelle erfolgt.</p>
<table cellspacing="0" cellpadding="2" width="592" border="1">
<tbody>
<tr>
<td valign="top" width="276">Vorteil</td>
<td valign="top" width="314">Nachteil</td>
</tr>
<tr>
<td valign="top" width="277">Automatische Regelung aller Transaktionen</td>
<td valign="top" width="314">Keine Unterst&#252;tzung der RETURNING-Klausel</td>
</tr>
<tr>
<td valign="top" width="277">Automatische Steuerung bei Master-Detail-Beziehungen</td>
<td valign="top" width="314">H&#246;herer Verwaltungsaufwand. Tabellen und Views m&#252;ssen verwaltet werden.</td>
</tr>
<tr>
<td valign="top" width="277">Zugriff bei der Suche auf alle View gebundenen Feldern</td>
<td valign="top" width="314">&#160;</td>
</tr>
<tr>
<td valign="top" width="277">Reduzierung der Netzbelastung durch Minimierung der POST-QUERY Aktionen</td>
<td valign="top" width="314">&#160;</td>
</tr>
<tr>
<td valign="top" width="277">Transaktionsregeln k&#246;nnen erweitert bzw. angepasst werden (INSTEAD-OF-Triggern)</td>
<td valign="top" width="314">&#160;</td>
</tr>
<tr>
<td valign="top" width="277">&#160;</td>
<td valign="top" width="314">&#160;</td>
</tr>
</tbody>
</table>
<h6>3. Zugriff &#252;ber Stored-Procedures</h6>
<p>Dieser Zugriff ist zwar sehr interessant, hat aber kaum Vorteile. </p>
<h3>Zusammenspiel von Oracle-Forms bez&#252;glich des Konzept des <b>Model-View-Controller</b> (MVC)</h3>
<h6>1. Zugriff &#252;ber Tabellen</h6>
<p align="justify">Dieser Zugriff unterst&#252;tzt das MVC-Modell sicherlich am Schlechtesten. Hier wird sowohl die Pr&#228;sentation als auch die Manipulation und Haltung der Daten zusammengelegt. </p>
<table cellspacing="0" cellpadding="2" width="593" border="1">
<tbody>
<tr>
<td valign="top" width="276">Vorteil</td>
<td valign="top" width="315">Nachteil</td>
</tr>
<tr>
<td valign="top" width="277">Bez&#252;glich des MVC-Konzept KEINE</td>
<td valign="top" width="315">keine Unterst&#252;tzung des MVC-Konzept</td>
</tr>
<tr>
<td valign="top" width="277">&#160;</td>
<td valign="top" width="315">&#160;</td>
</tr>
</tbody>
</table>
<h6>2. Zugriff &#252;ber Views</h6>
<p align="justify">Dieser Zugriff unterst&#252;tzt das MVC-Modell sehr gut, fast sogar perfekt. Durch die M&#246;glichkeit von INSTEAD-OF-Triggern kann das Manipulieren von Daten sehr gut gegen&#252;ber der Pr&#228;sentation gekapselt werden. Die Daten innerhalb der Tabelle wird durch einen View dar&#252;ber hinaus schon optimal gesch&#252;tzt.</p>
<table cellspacing="0" cellpadding="2" width="595" border="1">
<tbody>
<tr>
<td valign="top" width="271">Vorteil</td>
<td valign="top" width="322">Nachteil</td>
</tr>
<tr>
<td valign="top" width="271">sehr gute Unterst&#252;tzung des MVC-Konzeptes</td>
<td valign="top" width="322">Doppelte Verwaltung von Tabellen und Views</td>
</tr>
<tr>
<td valign="top" width="271">&#160;</td>
<td valign="top" width="322">ggf. Anpassen der INSTEAD-OF-Triggern</td>
</tr>
<tr>
<td valign="top" width="271">&#160;</td>
<td valign="top" width="322">&#160;</td>
</tr>
</tbody>
</table>
<p><em>Hinweis:      <br />Seit Oracle9i kann man das Einf&#252;gen (INSERT) bzw. &#196;ndern (UPDATE) von Daten als Parameter via ROWTYPE weiter optimieren. Siehe hierzu den Blog &quot;INSERT INTO via ROWTYPE&quot;</em></p>
<h6>3. Zugriff &#252;ber Stored-Procedures</h6>
<table cellspacing="0" cellpadding="2" width="595" border="1">
<tbody>
<tr>
<td valign="top" width="272">Vorteil</td>
<td valign="top" width="321">Nachteil</td>
</tr>
<tr>
<td valign="top" width="272">Saubere Unterst&#252;tzung des MVC-Konzeptes</td>
<td valign="top" width="321">Standardfunktionen (Query, Insert, Update, Delete) muss nachgebildet und angepasst werden.</td>
</tr>
<tr>
<td valign="top" width="272">Zugriff der Daten &#252;ber mehrere verkn&#252;pfte Tabellen</td>
<td valign="top" width="321">Unn&#246;tiger Mehraufwand (Anpassen aller Prozeduren und Forms-Module) beim Erweitern von Tabellen.</td>
</tr>
<tr>
<td valign="top" width="272">&#160;</td>
<td valign="top" width="321">&#160;</td>
</tr>
</tbody>
</table>
<h5>Fazit</h5>
<p align="justify">Wenn man gezwungen ist nach dem Konzept des MVC zu arbeiten, ist sicherlich der Zugriff und die Beschaffung bzw. Manipulation der Daten &#252;ber Views zu empfehlen. Ansonsten sollte man entweder den direkten Zugriff suchen oder eine gesunde Mischung aus direktem Tabellenzugriff und Zugriff &#252;ber Views suchen.</p>
<p>Den Zugriff &#252;ber Stored-Procedures ist in manchen F&#228;llen sicherlich hilfreich, aber in der Regel (ca. 90%) nicht zu empfehlen. Hier steht der Aufwand der Programmierung in keinem Verh&#228;ltnis zum evtl. Mehrwert.    </p>
<h5>Meinung der Autors</h5>
<p align="justify">Ich selber arbeite seit mehr als 10 Jahren mit Oracle-Forms und wei&#223; dieses Werkzeug zu sch&#228;tzen. Mann sollte allerdings auch bedenken, dass es sich um ein 4GL-Werkzeug handelt; deshalb nicht unbedingt in das Konzept eines MVC passt. Mann sollte das Werkzeug&#160; so benutzt, wof&#252;r es entwickelt worden ist, und zwar als Rapid-Development-Tool. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.entwicklungsgedanken.de/2008/02/03/oracle-forms-datenblcke-stored-procedure-vs-base-table-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
