{"id":100,"date":"2023-01-31T10:01:00","date_gmt":"2023-01-31T09:01:00","guid":{"rendered":"https:\/\/josefnemec.cz\/blog\/?p=100"},"modified":"2024-12-31T10:45:47","modified_gmt":"2024-12-31T09:45:47","slug":"co-je-orm-a-proc-ho-pouzivat","status":"publish","type":"post","link":"https:\/\/josefnemec.cz\/blog\/technologie\/co-je-orm-a-proc-ho-pouzivat\/","title":{"rendered":"Co je ORM a pro\u010d ho pou\u017e\u00edvat?"},"content":{"rendered":"\n<p>Object-Relational Mapping (ORM) je technika, kter\u00e1 usnad\u0148uje pr\u00e1ci s datab\u00e1zemi. Pomoc\u00ed ORM m\u016f\u017eete manipulovat s datab\u00e1zov\u00fdmi daty jako s objekty, co\u017e zjednodu\u0161uje k\u00f3d a \u010din\u00ed jej p\u0159ehledn\u011bj\u0161\u00edm.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Doctrine ORM<\/h3>\n\n\n\n<p>Doctrine je popul\u00e1rn\u00ed ORM n\u00e1stroj pro PHP. Poskytuje robustn\u00ed n\u00e1stroje pro mapov\u00e1n\u00ed entit na datab\u00e1zov\u00e9 tabulky a podporuje pokro\u010dil\u00e9 funkce, jako jsou vztahy mezi tabulkami nebo lazy loading.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Uk\u00e1zka pr\u00e1ce s Doctrine:<\/h4>\n\n\n\n<p>Definice entity:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n * @Entity\n * @Table(name=\"products\")\n *\/\nclass Product\n{\n    \/** @Id @Column(type=\"integer\") @GeneratedValue *\/\n    private $id;\n\n    \/** @Column(type=\"string\") *\/\n    private $name;\n\n    \/** @Column(type=\"decimal\", scale=2) *\/\n    private $price;\n\n    \/\/ Gettery a settery\n}<\/code><\/pre>\n\n\n\n<p>Dotaz na data:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$product = $entityManager-&gt;find(Product::class, 1);\necho $product-&gt;getName();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Nextras ORM<\/h3>\n\n\n\n<p>Nextras ORM je \u010desk\u00e1 alternativa k Doctrine, kter\u00e1 se zam\u011b\u0159uje na jednoduchost a rychlost. Je vhodn\u00e1 pro projekty v Nette frameworku.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Uk\u00e1zka pr\u00e1ce s Nextras ORM:<\/h4>\n\n\n\n<p>Definice entity:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n * @property int    $id    {primary}\n * @property string $name\n * @property float  $price\n *\/\nclass Product extends \\Nextras\\Orm\\Entity\\Entity\n{\n}<\/code><\/pre>\n\n\n\n<p>Definice repository:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class ProductRepository extends \\Nextras\\Orm\\Repository\\Repository\n{\n    public static function getEntityClassNames(): array\n    {\n        return &#91;Product::class];\n    }\n}<\/code><\/pre>\n\n\n\n<p>Dotaz na data:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$product = $productRepository-&gt;getById(1);\necho $product-&gt;name;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00fdhody ORM<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Zjednodu\u0161en\u00ed:<\/strong> Pr\u00e1ce s datab\u00e1z\u00ed pomoc\u00ed objekt\u016f m\u00edsto SQL dotaz\u016f.<\/li>\n\n\n\n<li><strong>Bezpe\u010dnost:<\/strong> Ochrana proti SQL injection.<\/li>\n\n\n\n<li><strong>\u00dadr\u017eba:<\/strong> K\u00f3d je p\u0159ehledn\u011bj\u0161\u00ed a snadno roz\u0161i\u0159iteln\u00fd.<\/li>\n<\/ol>\n\n\n\n<p>ORM n\u00e1stroje, jako Doctrine nebo Nextras ORM, jsou neoceniteln\u00fdmi pomocn\u00edky p\u0159i pr\u00e1ci s datab\u00e1zemi v modern\u00edch aplikac\u00edch.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Object-Relational Mapping (ORM) je technika, kter\u00e1 usnad\u0148uje pr\u00e1ci s datab\u00e1zemi. Pomoc\u00ed ORM m\u016f\u017eete manipulovat s datab\u00e1zov\u00fdmi daty jako s objekty, co\u017e zjednodu\u0161uje k\u00f3d a \u010din\u00ed jej p\u0159ehledn\u011bj\u0161\u00edm. Doctrine ORM Doctrine je popul\u00e1rn\u00ed ORM n\u00e1stroj pro PHP. Poskytuje robustn\u00ed n\u00e1stroje pro<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[77],"tags":[75,73,74],"class_list":["post-100","post","type-post","status-publish","format-standard","hentry","category-technologie","tag-mssql","tag-mysql","tag-postgrsql"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":1,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/100\/revisions"}],"predecessor-version":[{"id":101,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/100\/revisions\/101"}],"wp:attachment":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media?parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/categories?post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/tags?post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}