{"id":1121,"date":"2014-03-25T00:53:22","date_gmt":"2014-03-25T03:53:22","guid":{"rendered":"http:\/\/www.boaglio.com\/?p=1121"},"modified":"2021-02-08T23:32:26","modified_gmt":"2021-02-09T02:32:26","slug":"facilidade-play-2-em-fazer-crud-com-mysql","status":"publish","type":"post","link":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/","title":{"rendered":"facilidade do Play 2 em fazer CRUD com MySQL"},"content":{"rendered":"<p>Todo come\u00e7o de projeto sempre tem a parte <strong>chata<\/strong> de cadastro.<\/p>\n<p>Quando se gasta tempo precioso fazendo tela de CRUD que s\u00f3 o administrador (voc\u00ea) vai usar, isso passa <strong>de chato para insuport\u00e1vel<\/strong>!<\/p>\n<p><a href=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1122\" src=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg\" alt=\"quesaco\" width=\"200\" height=\"260\" \/><\/a><\/p>\n<p>Felizmente alguns frameworks tem alguma facilidade desenvolvida oficialmente ou n\u00e3o.<\/p>\n<p>No caso do <a href=\"http:\/\/www.playframework.com\/\" target=\"_blank\" rel=\"noopener\">Play Framework<\/a>, que tem como um de seus destaques a facilidade de uso, n\u00e3o poderia ser diferente. Entretanto, o facilitador de CRUD do Play n\u00e3o \u00e9 oficial, \u00e9 um dos interessantes plugins do site <a href=\"http:\/\/www.playmodules.net\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.playmodules.net\/<\/a> , o <a href=\"http:\/\/www.playmodules.net\/module\/play2-crud\" target=\"_blank\" rel=\"noopener\">play2-crud<\/a> .<\/p>\n<p>Vou usar uma tabela bem simples no MySQL, e vou mostrar como alterar apenas 5 arquivos e ter uma aplica\u00e7\u00e3o nova com CRUD funcionando.<\/p>\n<p>Come\u00e7amos criando a aplica\u00e7\u00e3o:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">fb@cascao ~\/workspace-play &gt; play new play2-crud-mysql\r\n       _\r\n _ __ | | __ _ _  _\r\n| '_ \\| |\/ _' | || |\r\n|  __\/|_|\\____|\\__ \/\r\n|_|            |__\/\r\n\r\nplay 2.2.2 built with Scala 2.10.3 (running Java 1.7.0_51), http:\/\/www.playframework.com\r\n\r\nThe new application will be created in \/home\/fb\/workspace-play\/play2-crud-mysql\r\n\r\nWhat is the application name? [play2-crud-mysql]\r\n&gt; \r\n\r\nWhich template do you want to use for this new application? \r\n\r\n  1             - Create a simple Scala application\r\n  2             - Create a simple Java application\r\n\r\n&gt; 2\r\nOK, application play2-crud-mysql is created.\r\n\r\nHave fun!\r\n\r\nfb@cascao ~\/workspace-play &gt;<\/pre>\n<p><strong>Arquivo 1 &#8211; play2-crud-mysql\\build.sbt<\/strong> &#8211; adicionamos as depend\u00eancias do MySQL e do plugin play2-crud<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"ini\">name := \"play2-crud-mysql\"\r\n\r\nversion := \"1.0-SNAPSHOT\"\r\n\r\nlibraryDependencies ++= Seq(\r\n  javaJdbc,\r\n  javaEbean,\r\n  cache,\r\n  \"mysql\" % \"mysql-connector-java\" % \"5.1.18\",\r\n  \"play2-crud\" % \"play2-crud_2.10\" % \"0.7.3-SNAPSHOT\" exclude(\"com.typesafe.play\", \"play-cache_2.10\")\r\n)     \r\n\r\nresolvers += \"hakandilek release\" at \"http:\/\/hakandilek.github.com\/maven-repo\/releases\/\"\r\n\r\nresolvers += \"hakandilek snapshots\" at \"http:\/\/hakandilek.github.com\/maven-repo\/snapshots\/\"\r\n\r\nplay.Project.playJavaSettings<\/pre>\n<p>Depois de adicionadas as depend\u00eancias, vamos configurar o Eclipse:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">fb@cascao ~\/workspace-play\/play2-crud-mysql &gt; play\r\n[info] Loading project definition from \/home\/fb\/workspace-play\/play2-crud-mysql\/project\r\n[info] Set current project to play2-crud-mysql (in build file:\/home\/fb\/workspace-play\/play2-crud-mysql\/)\r\n       _\r\n _ __ | | __ _ _  _\r\n| '_ \\| |\/ _' | || |\r\n|  __\/|_|\\____|\\__ \/\r\n|_|            |__\/\r\n\r\nplay 2.2.2 built with Scala 2.10.3 (running Java 1.7.0_51), http:\/\/www.playframework.com\r\n\r\n&gt; Type \"help play\" or \"license\" for more information.\r\n&gt; Type \"exit\" or use Ctrl+D to leave this console.\r\n\r\n[play2-crud-mysql] $ eclipse with-source=true\r\n[info] About to create Eclipse project files for your project(s).\r\n[info] Updating {file:\/home\/fb\/workspace-play\/play2-crud-mysql\/}play2-crud-mysql...\r\n[info] Resolving mysql#mysql-connector-java;5.1.18 ...\r\n[info] Successfully created Eclipse project files for project(s):\r\n[info] play2-crud-mysql\r\n<\/pre>\n<p>Agora podemos importar o nosso projeto pelo Eclipse, e trabalhar com ele.<\/p>\n<p><strong>Arquivo 2 &#8211; play2-crud-mysql\\app\\models\\Seriado.java<\/strong> &#8211; dentro da <em>package models<\/em> , definimos o nosso domain <em>Seriado<\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">package models;\r\n\r\nimport javax.persistence.*;\r\nimport play.data.validation.Constraints.Required;\r\nimport play.db.ebean.Model;\r\nimport play.utils.dao.BasicModel;\r\n\r\n@Entity\r\npublic class Seriado extends Model implements BasicModel {\r\n\r\n    private static final long serialVersionUID = 2500768374252151706L;\r\n\r\n    @Id\r\n    private Long id;\r\n\r\n    @Basic\r\n    @Required\r\n    private String nome;\r\n\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Long id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getNome() {\r\n        return nome;\r\n    }\r\n\r\n    public void setNome(String nome) {\r\n        this.nome = nome;\r\n    }\r\n\r\n    public Long getKey() {\r\n        return id;\r\n    }\r\n\r\n    public void setKey(Long key) {\r\n        setId(key);\r\n    }\r\n\r\n}<\/pre>\n<p><strong>Arquivo 3 &#8211; play2-crud-mysql\\conf\\application.conf<\/strong> &#8211; configura\u00e7\u00f5es de banco de dados MySQL e do Play2-CRUD :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"ini\">#\r\n# Play 2 CRUD para MySQL\r\n# ~~~~~\r\n\r\n# Secret key\r\napplication.secret=\"a^gBGEMapwMhdr\/FY1NtsiG6`TGsbsT[]q:lZU:US\r\n\r\n#\u00a0The\u00a0application\u00a0languages\r\n#\u00a0~~~~~\r\napplication.langs=\"en\"\r\n\r\n#\u00a0Ajuste\u00a0do\u00a0Play2\u00a0CRUD\r\n#\u00a0~~~~~\r\napplication.global=play.utils.crud.GlobalCRUDSettings\r\n\r\n#\u00a0Database\u00a0configuration\r\n#\u00a0~~~~~\r\ndb.default.driver=com.mysql.jdbc.Driver\r\ndb.default.url=\"jdbc:mysql:\/\/localhost\/boaglio1\"\r\ndb.default.user=boaglio1\r\ndb.default.password=\"boaglio1\"\r\n\r\n#\u00a0Evolutions\r\n#\u00a0~~~~~\r\nevolutionplugin=enabled\r\n\r\n#\u00a0Ebean\u00a0configuration\r\n#\u00a0~~~~~\r\nebean.default=\"models.*\"\r\n\r\n#\u00a0Logger\r\nlogger.root=ERROR\r\nlogger.play=INFO\r\nlogger.application=DEBUG<\/pre>\n<p><strong>Arquivo 4 &#8211; play2-crud-mysql\\conf\\routes.conf<\/strong> &#8211; adicionadas rotas do Play2-CRUD :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"ini\"># Routes\r\n# This file defines all application routes (Higher priority routes first)\r\n# ~~~~\r\n\r\n# Home page\r\nGET     \/                           controllers.Application.index()\r\nGET     \/assets\/*file               controllers.Assets.at(path=\"\/public\", file)\r\n\r\n# Rota do Play2 CRUD\r\n-&gt;     \/app             play.crud.Routes\r\n\r\n# Rota do Play2 CRUD - REST\r\n-&gt;     \/api             play.rest.Routes<\/pre>\n<p><strong>Arquivo 5 &#8211; play2-crud-mysql\\app\\views\\index.scala.html<\/strong> &#8211; p\u00e1gina inicial auxiliar:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\">@(message: String)\r\n\r\n@main(\"Play2 CRUD MySQL\") {\r\n  &lt;h2&gt;Play2 CRUD MySQL &lt;h2&gt;\r\n  &lt;a href=\"\/app\"&gt;Lista de tabelas para o CRUD&lt;\/a&gt;\r\n  &lt;a\u00a0href=\"\/api\"&gt;Lista de chamadas REST&lt;\/a&gt;\r\n  &lt;a href=\"\/api\/Seriado\/list\"&gt;Lista de seriados em REST&lt;\/a&gt;\r\n}\r\n\r\n<\/pre>\n<p>Nosso CRUD est\u00e1 pronto, vamos colocar para funcionar:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[play2-crud-mysql] $ run\r\n\r\n--- (Running the application from SBT, auto-reloading is enabled) ---\r\n\r\n[info] play - Listening for HTTP on \/0.0.0.0:9000\r\n\r\n(Server started, use Ctrl+D to stop and go back to the console...)\r\n\r\n[info] play - database [default] connected at jdbc:mysql:\/\/localhost\/boaglio1\r\n[info] p.u.m.c.ClasspathScanningConverterRegistry - Converter:class java.lang.Double : play.utils.meta.convert.DoubleConverter@241ca5f1\r\n[info] p.u.m.c.ClasspathScanningConverterRegistry - Converter:class java.lang.Integer : play.utils.meta.convert.IntegerConverter@54d283bc\r\n[info] p.u.m.c.ClasspathScanningConverterRegistry - Converter:class java.lang.Long : play.utils.meta.convert.LongConverter@48c6d725\r\n[info] play - Application started (Dev)\r\n<\/pre>\n<p>Acessando <a href=\"http:\/\/localhost:9000\/\">http:\/\/localhost:9000\/<\/a> temos a p\u00e1gina informando que a tabela de seriados n\u00e3o existe:<\/p>\n<p><a href=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-evolution.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1126\" src=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-evolution.png\" alt=\"play-evolution\" width=\"773\" height=\"381\" srcset=\"https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-evolution.png 773w, https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-evolution-300x147.png 300w\" sizes=\"auto, (max-width: 773px) 100vw, 773px\" \/><\/a><\/p>\n<p>Depois de clicar em <em>apply this script now!<\/em>, ser\u00e1 criada a tabela no MySQL e exibida a tela inicial:<\/p>\n<p><a href=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1125\" src=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud1.png\" alt=\"play-crud1\" width=\"712\" height=\"371\" srcset=\"https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud1.png 712w, https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud1-300x156.png 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/a><\/p>\n<p>Na primeira op\u00e7\u00e3o o plugin automaticamente lista todos os domains (no nosso caso temos apenas um):<\/p>\n<p><a href=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1127\" src=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud2.png\" alt=\"play-crud2\" width=\"927\" height=\"455\" srcset=\"https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud2.png 927w, https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud2-300x147.png 300w\" sizes=\"auto, (max-width: 927px) 100vw, 927px\" \/><\/a><\/p>\n<p>Clicando em <em>create<\/em>, vamos para a tela para cadastrar um novo seriado:<\/p>\n<p><a href=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1128\" src=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado.png\" alt=\"play-novo-seriado\" width=\"496\" height=\"376\" srcset=\"https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado.png 496w, https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado-300x227.png 300w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/a><\/p>\n<p>Depois de cadastrado, o registro \u00e9 exibido em uma data table:<\/p>\n<p><a href=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1129\" src=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado2.png\" alt=\"play-novo-seriado2\" width=\"992\" height=\"543\" srcset=\"https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado2.png 992w, https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-novo-seriado2-300x164.png 300w\" sizes=\"auto, (max-width: 992px) 100vw, 992px\" \/><\/a><\/p>\n<p>Toda a estrutura de CRUD est\u00e1 pronta, adicionando mais uma classe de dom\u00ednio na <strong>package models<\/strong>, ela automaticamente j\u00e1 entra na tela inicial para cadastrar, e isso <em>sem nem reiniciar o servidor<\/em>.<\/p>\n<p>Al\u00e9m dessa facilidade, o plugin play2-crud ainda oferece as opera\u00e7\u00f5es de CRUD via REST, algo que \u00e9 muito interessante fazer, por exemplo, via Android\/iOS.<\/p>\n<p>Depois de popular a tabela de seriados com <a href=\"https:\/\/github.com\/boaglio\/play2-crud-mysql\/raw\/master\/sql\/tabela-seriado.sql\" target=\"_blank\" rel=\"noopener\">esse script SQL<\/a>, temos o exemplo no browser:<\/p>\n<p><a href=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1130\" src=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud3.png\" alt=\"play REST\" width=\"1161\" height=\"333\" srcset=\"https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud3.png 1161w, https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud3-300x86.png 300w, https:\/\/boaglio.com\/wp-content\/uploads\/2014\/03\/play-crud3-1024x293.png 1024w\" sizes=\"auto, (max-width: 1161px) 100vw, 1161px\" \/><\/a><\/p>\n<p>Todos os fontes aqui est\u00e3o nesse projeto do <strong>GitHub<\/strong>: <a href=\"https:\/\/github.com\/boaglio\/play2-crud-mysql\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/boaglio\/play2-crud-mysql<\/a> .<\/p>\n<p>Essa \u00e9 uma das v\u00e1rias facilidades do Play Framework , no artigo anterior comentei do <a href=\"http:\/\/www.boaglio.com\/index.php\/2014\/03\/12\/saindo-da-mesmisse-com-play-framework-e-mongodb\/\" target=\"_blank\" rel=\"noopener\">integra\u00e7\u00e3o com o MongoDB<\/a> e tamb\u00e9m <a href=\"http:\/\/www.casadocodigo.com.br\/products\/livro-play-framework-java\" target=\"_blank\" rel=\"noopener\">gostei tanto de usar Play que escrevi um livro sobre o assunto<\/a>.<\/p>\n<p><strong>Fernando Boaglio, para a comunidade<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Todo come\u00e7o de projeto sempre tem a parte chata de cadastro. Quando se gasta tempo precioso fazendo tela de CRUD que s\u00f3 o administrador (voc\u00ea) vai usar, isso passa de chato para insuport\u00e1vel! Felizmente alguns frameworks tem alguma facilidade desenvolvida oficialmente ou n\u00e3o. No caso do Play Framework, que tem como um de seus destaques [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,23,22],"tags":[],"class_list":["post-1121","post","type-post","status-publish","format-standard","hentry","category-java","category-mysql","category-play"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>facilidade do Play 2 em fazer CRUD com MySQL - Boaglio.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"facilidade do Play 2 em fazer CRUD com MySQL - Boaglio.com\" \/>\n<meta property=\"og:description\" content=\"Todo come\u00e7o de projeto sempre tem a parte chata de cadastro. Quando se gasta tempo precioso fazendo tela de CRUD que s\u00f3 o administrador (voc\u00ea) vai usar, isso passa de chato para insuport\u00e1vel! Felizmente alguns frameworks tem alguma facilidade desenvolvida oficialmente ou n\u00e3o. No caso do Play Framework, que tem como um de seus destaques [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/\" \/>\n<meta property=\"og:site_name\" content=\"Boaglio.com\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-25T03:53:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-09T02:32:26+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg\" \/>\n<meta name=\"author\" content=\"Fernando Boaglio\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fernando Boaglio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/\"},\"author\":{\"name\":\"Fernando Boaglio\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/#\\\/schema\\\/person\\\/8c1801baf8ab6b6d207210832f6407d7\"},\"headline\":\"facilidade do Play 2 em fazer CRUD com MySQL\",\"datePublished\":\"2014-03-25T03:53:22+00:00\",\"dateModified\":\"2021-02-09T02:32:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/\"},\"wordCount\":445,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.boaglio.com\\\/wp-content\\\/uploads\\\/2014\\\/03\\\/quesaco.jpg\",\"articleSection\":[\"Java\",\"MySQL\",\"Play\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/\",\"url\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/\",\"name\":\"facilidade do Play 2 em fazer CRUD com MySQL - Boaglio.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.boaglio.com\\\/wp-content\\\/uploads\\\/2014\\\/03\\\/quesaco.jpg\",\"datePublished\":\"2014-03-25T03:53:22+00:00\",\"dateModified\":\"2021-02-09T02:32:26+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/#\\\/schema\\\/person\\\/8c1801baf8ab6b6d207210832f6407d7\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.boaglio.com\\\/wp-content\\\/uploads\\\/2014\\\/03\\\/quesaco.jpg\",\"contentUrl\":\"http:\\\/\\\/www.boaglio.com\\\/wp-content\\\/uploads\\\/2014\\\/03\\\/quesaco.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/2014\\\/03\\\/25\\\/facilidade-play-2-em-fazer-crud-com-mysql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/boaglio.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"facilidade do Play 2 em fazer CRUD com MySQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/#website\",\"url\":\"https:\\\/\\\/boaglio.com\\\/\",\"name\":\"Boaglio.com\",\"description\":\"tecnologia e cr\u00edticas construtivas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/boaglio.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/boaglio.com\\\/#\\\/schema\\\/person\\\/8c1801baf8ab6b6d207210832f6407d7\",\"name\":\"Fernando Boaglio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a939c977cba6bad98bab6b4ef8e44bdd3908fa870d05667774506e6d0b692e47?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a939c977cba6bad98bab6b4ef8e44bdd3908fa870d05667774506e6d0b692e47?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a939c977cba6bad98bab6b4ef8e44bdd3908fa870d05667774506e6d0b692e47?s=96&d=mm&r=g\",\"caption\":\"Fernando Boaglio\"},\"description\":\"???\",\"sameAs\":[\"https:\\\/\\\/www.boaglio.com\"],\"url\":\"https:\\\/\\\/boaglio.com\\\/index.php\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"facilidade do Play 2 em fazer CRUD com MySQL - Boaglio.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/","og_locale":"pt_BR","og_type":"article","og_title":"facilidade do Play 2 em fazer CRUD com MySQL - Boaglio.com","og_description":"Todo come\u00e7o de projeto sempre tem a parte chata de cadastro. Quando se gasta tempo precioso fazendo tela de CRUD que s\u00f3 o administrador (voc\u00ea) vai usar, isso passa de chato para insuport\u00e1vel! Felizmente alguns frameworks tem alguma facilidade desenvolvida oficialmente ou n\u00e3o. No caso do Play Framework, que tem como um de seus destaques [&hellip;]","og_url":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/","og_site_name":"Boaglio.com","article_published_time":"2014-03-25T03:53:22+00:00","article_modified_time":"2021-02-09T02:32:26+00:00","og_image":[{"url":"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg","type":"","width":"","height":""}],"author":"Fernando Boaglio","twitter_misc":{"Escrito por":"Fernando Boaglio","Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#article","isPartOf":{"@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/"},"author":{"name":"Fernando Boaglio","@id":"https:\/\/boaglio.com\/#\/schema\/person\/8c1801baf8ab6b6d207210832f6407d7"},"headline":"facilidade do Play 2 em fazer CRUD com MySQL","datePublished":"2014-03-25T03:53:22+00:00","dateModified":"2021-02-09T02:32:26+00:00","mainEntityOfPage":{"@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/"},"wordCount":445,"commentCount":1,"image":{"@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#primaryimage"},"thumbnailUrl":"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg","articleSection":["Java","MySQL","Play"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/","url":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/","name":"facilidade do Play 2 em fazer CRUD com MySQL - Boaglio.com","isPartOf":{"@id":"https:\/\/boaglio.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#primaryimage"},"image":{"@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#primaryimage"},"thumbnailUrl":"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg","datePublished":"2014-03-25T03:53:22+00:00","dateModified":"2021-02-09T02:32:26+00:00","author":{"@id":"https:\/\/boaglio.com\/#\/schema\/person\/8c1801baf8ab6b6d207210832f6407d7"},"breadcrumb":{"@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#primaryimage","url":"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg","contentUrl":"http:\/\/www.boaglio.com\/wp-content\/uploads\/2014\/03\/quesaco.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/boaglio.com\/index.php\/2014\/03\/25\/facilidade-play-2-em-fazer-crud-com-mysql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/boaglio.com\/"},{"@type":"ListItem","position":2,"name":"facilidade do Play 2 em fazer CRUD com MySQL"}]},{"@type":"WebSite","@id":"https:\/\/boaglio.com\/#website","url":"https:\/\/boaglio.com\/","name":"Boaglio.com","description":"tecnologia e cr\u00edticas construtivas","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/boaglio.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/boaglio.com\/#\/schema\/person\/8c1801baf8ab6b6d207210832f6407d7","name":"Fernando Boaglio","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/a939c977cba6bad98bab6b4ef8e44bdd3908fa870d05667774506e6d0b692e47?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a939c977cba6bad98bab6b4ef8e44bdd3908fa870d05667774506e6d0b692e47?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a939c977cba6bad98bab6b4ef8e44bdd3908fa870d05667774506e6d0b692e47?s=96&d=mm&r=g","caption":"Fernando Boaglio"},"description":"???","sameAs":["https:\/\/www.boaglio.com"],"url":"https:\/\/boaglio.com\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/posts\/1121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/comments?post=1121"}],"version-history":[{"count":12,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/posts\/1121\/revisions"}],"predecessor-version":[{"id":2129,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/posts\/1121\/revisions\/2129"}],"wp:attachment":[{"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/media?parent=1121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/categories?post=1121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/boaglio.com\/index.php\/wp-json\/wp\/v2\/tags?post=1121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}